29template <
typename ClientT>
51 while (
client.available() == 0) {
63 void reply(
int status,
const char* msg) {
71 int status = 200,
const char* msg =
SUCCESS)
override {
76 while (inputStream.available()) {
77 int len = inputStream.readBytes(buffer,
buffer_size);
85 const char* msg =
SUCCESS)
override {
95 void reply(
const char* contentType, Stream& inputStream,
int size,
96 int status = 200,
const char* msg =
SUCCESS)
override {
105 while (inputStream.available()) {
106 int len = inputStream.readBytes(buffer,
buffer_size);
107 p_client->write((
const uint8_t*)buffer, len);
112 void reply(
const char* contentType,
size_t (*callback)(Print& out,
void* ref),
113 int status = 200,
const char* msg =
SUCCESS,
114 void* ref =
nullptr)
override {
118 size_t size = callback(nop, ref);
124 size_t size_eff = callback(*
p_client, ref);
125 if (size_eff != size) {
127 "HttpServer callback wrote %d bytes; expected %d",
131 callback(Serial, ref);
134 #if DLNA_CHECK_XML_LENGTH
136 size_t test_len = callback(test, ref);
137 if (strlen(test.
c_str()) != size) {
139 "HttpServer wrote %d bytes: expected %d / strlen: %d",
140 test_len, size, strlen(test.
c_str()));
146 void reply(
const char* contentType,
const char* str,
int status = 200,
147 const char* msg =
SUCCESS)
override {
150 int len = strlen(str);
156 p_client->write((
const uint8_t*)str, len);
160 void reply(
const char* contentType,
const uint8_t* str,
int len,
161 int status = 200,
const char* msg =
SUCCESS)
override {
169 p_client->write((
const uint8_t*)str, len);
177 reply(
"text/plain",
"Page Not Found", 404,
"Page Not Found");
180 void replyError(
int err,
const char* msg =
"Internal Server Error")
override {
182 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:207
virtual ~HttpClientHandler()=default
bool is_keep_alive
Definition: HttpClientHandler.h:209
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:112
HttpClientHandler()=default
void replyChunked(const char *contentType, int status=200, const char *msg=SUCCESS) override
Definition: HttpClientHandler.h:84
void replyError(int err, const char *msg="Internal Server Error") override
Definition: HttpClientHandler.h:180
int buffer_size
Definition: HttpClientHandler.h:208
HttpRequestHeader & requestHeader()
Definition: HttpClientHandler.h:197
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:95
void reply(int status, const char *msg)
Definition: HttpClientHandler.h:63
void readHttpHeader()
Reads the http header info from the client.
Definition: HttpClientHandler.h:47
HttpReplyHeader & replyHeader()
Definition: HttpClientHandler.h:199
HttpClientHandler(ClientT &client)
Definition: HttpClientHandler.h:35
void setClient(ClientT *client)
Definition: HttpClientHandler.h:39
ClientT * p_client
Definition: HttpClientHandler.h:205
Client * client() override
Definition: HttpClientHandler.h:195
void replyOK() override
Definition: HttpClientHandler.h:173
void replyChunked(const char *contentType, Stream &inputStream, int status=200, const char *msg=SUCCESS) override
Definition: HttpClientHandler.h:70
void reply(const char *contentType, const uint8_t *str, int len, int status=200, const char *msg=SUCCESS) override
Definition: HttpClientHandler.h:160
void setKeepAlive(bool active)
Definition: HttpClientHandler.h:43
bool isKeepAlive()
Definition: HttpClientHandler.h:44
void replyNotFound() override
Definition: HttpClientHandler.h:175
HttpRequestHeader request_header
Definition: HttpClientHandler.h:206
void reply(const char *contentType, const char *str, int status=200, const char *msg=SUCCESS) override
Definition: HttpClientHandler.h:146
void resize(size_t newSize)
Definition: HttpClientHandler.h:202
void crlf() override
Definition: HttpClientHandler.h:191
void endClient() override
Definition: HttpClientHandler.h:185
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 * CON_CLOSE
Definition: HttpHeader.h:19
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