Arduino DLNA Server
Loading...
Searching...
No Matches
IHttpServer.h
Go to the documentation of this file.
1#pragma once
2
3#include <stddef.h>
4
5#include "Client.h"
6#include "HttpHeader.h"
7#include "basic/Str.h"
8#include "basic/Url.h"
9
10class IPAddress;
11class Print;
12class Stream;
13
14namespace tiny_dlna {
15
16class IHttpServer;
17class HttpRequestHandlerLine;
18
19using web_callback_fn = void (*)(IHttpServer* server, const char* requestPath,
20 HttpRequestHandlerLine* handlerLine);
21
31 public:
32 virtual ~IHttpServer() = default;
33
35 virtual IPAddress& localIP() = 0;
37 virtual bool begin() = 0;
39 virtual void end() = 0;
41 virtual void rewrite(const char* from, const char* to) = 0;
43 virtual void on(const char* url, TinyMethodID method, web_callback_fn fn,
44 void* ctx[] = nullptr, int ctxCount = 0) = 0;
46 virtual void on(const char* url, TinyMethodID method, const char* mime,
47 web_callback_fn fn) = 0;
49 virtual void on(const char* url, TinyMethodID method, const char* mime,
50 const char* result) = 0;
52 virtual void on(const char* url, TinyMethodID method, const char* mime,
53 const uint8_t* data, int len) = 0;
55 virtual void on(const char* url, TinyMethodID method, Url& redirect) = 0;
57 virtual bool onRequest(const char* path) = 0;
59 virtual void replyChunked(const char* contentType, Stream& inputStream,
60 int status = 200, const char* msg = SUCCESS) = 0;
62 virtual void replyChunked(const char* contentType, int status = 200,
63 const char* msg = SUCCESS) = 0;
65 virtual void reply(const char* contentType, Stream& inputStream, int size,
66 int status = 200, const char* msg = SUCCESS) = 0;
68 virtual void reply(const char* contentType,
69 size_t (*callback)(Print& out, void* ref),
70 int status = 200, const char* msg = SUCCESS,
71 void* ref = nullptr) = 0;
73 virtual void reply(const char* contentType, const char* str,
74 int status = 200, const char* msg = SUCCESS) = 0;
76 virtual void reply(const char* contentType, const uint8_t* str, int len,
77 int status = 200, const char* msg = SUCCESS) = 0;
79 virtual void replyOK() = 0;
81 virtual void replyNotFound() = 0;
83 virtual void replyError(int err,
84 const char* msg = "Internal Server Error") = 0;
90 virtual void endClient() = 0;
92 virtual void crlf() = 0;
94 virtual void addHandler(HttpRequestHandlerLine* handlerLinePtr) = 0;
96 virtual bool doLoop() = 0;
98 virtual bool copy() = 0;
100 virtual Client& client() = 0;
102 virtual operator bool() = 0;
104 virtual bool isActive() = 0;
106 virtual const char* localHost() = 0;
108 virtual void setNoConnectDelay(int delay) = 0;
110 virtual Str contentStr() = 0;
112 virtual void setReference(void* reference) = 0;
114 virtual void* getReference() = 0;
115};
116
117} // namespace tiny_dlna
Reading and Writing of Http Replys.
Definition: HttpHeader.h:412
Used to register and process callbacks.
Definition: HttpRequestHandlerLine.h:15
Reading and writing of Http Requests.
Definition: HttpHeader.h:358
Abstract interface for HTTP server functionality.
Definition: IHttpServer.h:30
virtual void replyChunked(const char *contentType, Stream &inputStream, int status=200, const char *msg=SUCCESS)=0
Send chunked response from input stream.
virtual bool begin()=0
Start the HTTP server.
virtual void * getReference()=0
Get user reference pointer.
virtual Str contentStr()=0
Get content as string.
virtual bool doLoop()=0
Process server loop.
virtual void replyNotFound()=0
Send 404 Not Found response.
virtual void on(const char *url, TinyMethodID method, const char *mime, const uint8_t *data, int len)=0
Register binary data response for HTTP request.
virtual void reply(const char *contentType, const char *str, int status=200, const char *msg=SUCCESS)=0
Send string response.
virtual void on(const char *url, TinyMethodID method, const char *mime, web_callback_fn fn)=0
Register callback for HTTP request with MIME type.
virtual void end()=0
Stop the HTTP server.
virtual void setNoConnectDelay(int delay)=0
Set no-connect delay.
virtual void on(const char *url, TinyMethodID method, const char *mime, const char *result)=0
Register static response for HTTP request.
virtual void on(const char *url, TinyMethodID method, web_callback_fn fn, void *ctx[]=nullptr, int ctxCount=0)=0
Register callback for HTTP request with context.
virtual void replyOK()=0
Send 200 OK response.
virtual const char * localHost()=0
Get local hostname.
virtual bool copy()=0
Create a copy of the server instance.
virtual void setReference(void *reference)=0
Set user reference pointer.
virtual void crlf()=0
Send CRLF sequence.
virtual void replyChunked(const char *contentType, int status=200, const char *msg=SUCCESS)=0
Send chunked response with callback.
virtual HttpReplyHeader & replyHeader()=0
Get reference to reply header.
virtual IPAddress & localIP()=0
Get the local IP address of the server.
virtual void addHandler(HttpRequestHandlerLine *handlerLinePtr)=0
Add custom request handler.
virtual void on(const char *url, TinyMethodID method, Url &redirect)=0
Register redirect response for HTTP request.
virtual Client & client()=0
Get reference to current client.
virtual bool onRequest(const char *path)=0
Check if request matches registered handlers.
virtual ~IHttpServer()=default
virtual void endClient()=0
Close the client connection.
virtual void replyError(int err, const char *msg="Internal Server Error")=0
Send error response with status code.
virtual bool isActive()=0
Check if server is active.
virtual void reply(const char *contentType, const uint8_t *str, int len, int status=200, const char *msg=SUCCESS)=0
Send binary data response.
virtual HttpRequestHeader & requestHeader()=0
Get reference to request header.
virtual void reply(const char *contentType, size_t(*callback)(Print &out, void *ref), int status=200, const char *msg=SUCCESS, void *ref=nullptr)=0
Send response using callback function.
virtual void reply(const char *contentType, Stream &inputStream, int size, int status=200, const char *msg=SUCCESS)=0
Send response from input stream with known size.
virtual void rewrite(const char *from, const char *to)=0
Add URL rewrite rule.
Heap-backed string utility used throughout tiny_dlna.
Definition: Str.h:27
URL parser which breaks a full url string up into its individual parts.
Definition: Url.h:18
Definition: Allocator.h:13
TinyMethodID
Definition: HttpHeader.h:35
const char * SUCCESS
Definition: HttpHeader.h:25
void(*)(IHttpServer *server, const char *requestPath, HttpRequestHandlerLine *handlerLine) web_callback_fn
Definition: IHttpServer.h:20