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
20 public:
21 virtual ~IClientHandler() = default;
22 // Methods now use internal client state
23 virtual void replyChunked(const char* contentType, Stream& inputStream, int status = 200, const char* msg = SUCCESS) = 0;
24 virtual void replyChunked(const char* contentType, int status = 200, const char* msg = SUCCESS) = 0;
25 virtual void reply(const char* contentType, Stream& inputStream, int size, int status = 200, const char* msg = SUCCESS) = 0;
26 virtual void reply(const char* contentType, size_t (*callback)(Print& out, void* ref), int status = 200, const char* msg = SUCCESS, void* ref = nullptr) = 0;
27 virtual void reply(const char* contentType, const char* str, int status = 200, const char* msg = SUCCESS) = 0;
28 virtual void reply(const char* contentType, const uint8_t* str, int len, int status = 200, const char* msg = SUCCESS) = 0;
29 virtual void replyOK() = 0;
30 virtual void replyNotFound() = 0;
31 virtual void replyError(int err, const char* msg = "Internal Server Error") = 0;
32 virtual void endClient() = 0;
33 virtual void crlf() = 0;
34 virtual Client* client() = 0;
37
38};
39
40typedef void (*web_callback_fn)(IClientHandler& client, IHttpServer* server, const char* requestPath,
41 HttpRequestHandlerLine* handlerLine);
42
51 public:
52 virtual ~IHttpServer() = default;
53 virtual IPAddress& localIP() = 0;
54 virtual bool begin() = 0;
55 virtual void end() = 0;
56 virtual void rewrite(const char* from, const char* to) = 0;
57 virtual void on(const char* url, TinyMethodID method, web_callback_fn fn,
58 void* ctx[] = nullptr, int ctxCount = 0) = 0;
60 virtual void on(const char* url, TinyMethodID method, const char* mime,
61 web_callback_fn fn) = 0;
63 virtual void on(const char* url, TinyMethodID method, const char* mime,
64 const char* result) = 0;
66 virtual void on(const char* url, TinyMethodID method, const char* mime,
67 const uint8_t* data, int len) = 0;
69 virtual void on(const char* url, TinyMethodID method, Url& redirect) = 0;
71 virtual bool onRequest(const char* path) = 0;
73 virtual void addHandler(HttpRequestHandlerLine* handlerLinePtr) = 0;
75 virtual bool doLoop() = 0;
77 virtual bool copy() = 0;
78 virtual operator bool() = 0;
79 virtual bool isActive() = 0;
80 virtual const char* localHost() = 0;
81 virtual void setNoConnectDelay(int delay) = 0;
82 virtual void setReference(void* reference) = 0;
83 virtual void* getReference() = 0;
84};
85
86
87} // namespace tiny_dlna
Reading and Writing of Http Replys.
Definition: HttpHeader.h:409
Used to register and process callbacks.
Definition: HttpRequestHandlerLine.h:12
Reading and writing of Http Requests.
Definition: HttpHeader.h:355
Definition: IHttpServer.h:19
virtual void replyChunked(const char *contentType, Stream &inputStream, int status=200, const char *msg=SUCCESS)=0
virtual void reply(const char *contentType, size_t(*callback)(Print &out, void *ref), int status=200, const char *msg=SUCCESS, void *ref=nullptr)=0
virtual HttpRequestHeader & requestHeader()=0
virtual void replyNotFound()=0
virtual void reply(const char *contentType, Stream &inputStream, int size, int status=200, const char *msg=SUCCESS)=0
virtual void replyOK()=0
virtual void replyError(int err, const char *msg="Internal Server Error")=0
virtual ~IClientHandler()=default
virtual void replyChunked(const char *contentType, int status=200, const char *msg=SUCCESS)=0
virtual Client * client()=0
virtual void crlf()=0
virtual void reply(const char *contentType, const uint8_t *str, int len, int status=200, const char *msg=SUCCESS)=0
virtual HttpReplyHeader & replyHeader()=0
virtual void endClient()=0
virtual void reply(const char *contentType, const char *str, int status=200, const char *msg=SUCCESS)=0
Abstract interface for HTTP server functionality.
Definition: IHttpServer.h:50
virtual bool begin()=0
virtual void * getReference()=0
virtual bool doLoop()=0
Process server loop.
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 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
virtual void setNoConnectDelay(int delay)=0
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
virtual const char * localHost()=0
virtual bool copy()=0
Create a copy of the server instance.
virtual void setReference(void *reference)=0
virtual IPAddress & localIP()=0
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 bool onRequest(const char *path)=0
Check if request matches registered handlers.
virtual ~IHttpServer()=default
virtual bool isActive()=0
virtual void rewrite(const char *from, const char *to)=0
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(* web_callback_fn)(IClientHandler &client, IHttpServer *server, const char *requestPath, HttpRequestHandlerLine *handlerLine)
Definition: IHttpServer.h:40