29template <
typename ClientT>
46 while (
client.available() == 0) {
58 void reply(
int status,
const char* msg) {
66 int status = 200,
const char* msg =
SUCCESS)
override {
71 while (inputStream.available()) {
72 int len = inputStream.readBytes(buffer,
buffer_size);
80 const char* msg =
SUCCESS)
override {
90 void reply(
const char* contentType, Stream& inputStream,
int size,
91 int status = 200,
const char* msg =
SUCCESS)
override {
100 while (inputStream.available()) {
101 int len = inputStream.readBytes(buffer,
buffer_size);
102 p_client->write((
const uint8_t*)buffer, len);
107 void reply(
const char* contentType,
size_t (*callback)(Print& out,
void* ref),
108 int status = 200,
const char* msg =
SUCCESS,
109 void* ref =
nullptr)
override {
113 size_t size = callback(nop, ref);
119 size_t size_eff = callback(*
p_client, ref);
120 if (size_eff != size) {
122 "HttpServer callback wrote %d bytes; expected %d",
126 callback(Serial, ref);
129 #if DLNA_CHECK_XML_LENGTH
131 size_t test_len = callback(test, ref);
132 if (strlen(test.
c_str()) != size) {
134 "HttpServer wrote %d bytes: expected %d / strlen: %d",
135 test_len, size, strlen(test.
c_str()));
141 void reply(
const char* contentType,
const char* str,
int status = 200,
142 const char* msg =
SUCCESS)
override {
145 int len = strlen(str);
151 p_client->write((
const uint8_t*)str, len);
155 void reply(
const char* contentType,
const uint8_t* str,
int len,
156 int status = 200,
const char* msg =
SUCCESS)
override {
164 p_client->write((
const uint8_t*)str, len);
172 reply(
"text/plain",
"Page Not Found", 404,
"Page Not Found");
175 void replyError(
int err,
const char* msg =
"Internal Server Error")
override {
177 reply(
"text/plain", msg, err, msg);
Writes the data chunked to the actual client.
Definition: HttpChunkWriter.h:19
int writeChunk(Client &client, const char *str, int len, const char *str1=nullptr, int len1=0)
Definition: HttpChunkWriter.h:21
void writeEnd(Client &client)
Definition: HttpChunkWriter.h:38
Handles HTTP client connections and responses for the DLNA HTTP server.
Definition: HttpClientHandler.h:30
HttpReplyHeader reply_header
Definition: HttpClientHandler.h:202
virtual ~HttpClientHandler()=default
void reply(const char *contentType, size_t(*callback)(Print &out, void *ref), int status=200, const char *msg=SUCCESS, void *ref=nullptr) override
Definition: HttpClientHandler.h:107
HttpClientHandler()=default
void replyChunked(const char *contentType, int status=200, const char *msg=SUCCESS) override
Definition: HttpClientHandler.h:79
void replyError(int err, const char *msg="Internal Server Error") override
Definition: HttpClientHandler.h:175
int buffer_size
Definition: HttpClientHandler.h:203
HttpRequestHeader & requestHeader()
Definition: HttpClientHandler.h:192
HttpClientHandler(ClientT *client)
Definition: HttpClientHandler.h:36
void reply(const char *contentType, Stream &inputStream, int size, int status=200, const char *msg=SUCCESS) override
Definition: HttpClientHandler.h:90
void reply(int status, const char *msg)
Definition: HttpClientHandler.h:58
void readHttpHeader()
Reads the http header info from the client.
Definition: HttpClientHandler.h:42
HttpReplyHeader & replyHeader()
Definition: HttpClientHandler.h:194
HttpClientHandler(ClientT &client)
Definition: HttpClientHandler.h:35
void setClient(ClientT *client)
Definition: HttpClientHandler.h:39
ClientT * p_client
Definition: HttpClientHandler.h:200
Client * client() override
Definition: HttpClientHandler.h:190
void replyOK() override
Definition: HttpClientHandler.h:168
void replyChunked(const char *contentType, Stream &inputStream, int status=200, const char *msg=SUCCESS) override
Definition: HttpClientHandler.h:65
void reply(const char *contentType, const uint8_t *str, int len, int status=200, const char *msg=SUCCESS) override
Definition: HttpClientHandler.h:155
void replyNotFound() override
Definition: HttpClientHandler.h:170
HttpRequestHeader request_header
Definition: HttpClientHandler.h:201
void reply(const char *contentType, const char *str, int status=200, const char *msg=SUCCESS) override
Definition: HttpClientHandler.h:141
void resize(size_t newSize)
Definition: HttpClientHandler.h:197
void crlf() override
Definition: HttpClientHandler.h:186
void endClient() override
Definition: HttpClientHandler.h:180
Definition: IHttpServer.h:19
Class with does not do any output: it can be used to determine the length of the output.
Definition: NullPrint.h:12
Print to a dynamic string.
Definition: StrPrint.h:13
const char * c_str()
Definition: StrPrint.h:39
Definition: Allocator.h:13
const char * CONTENT_TYPE
Definition: HttpHeader.h:16
const char * CON_KEEP_ALIVE
Definition: HttpHeader.h:20
const char * CONTENT_LENGTH
Definition: HttpHeader.h:17
const char * TRANSFER_ENCODING
Definition: HttpHeader.h:21
const char * SUCCESS
Definition: HttpHeader.h:25
const char * CHUNKED
Definition: HttpHeader.h:22
const char * CONNECTION
Definition: HttpHeader.h:18