26template <
typename ClientType>
54 operator bool()
override {
55 return client_ptr !=
nullptr &&
static_cast<bool>(*client_ptr);
79 int len = -1)
override {
85 int post(
Url&
url,
size_t len, std::function<
size_t(Print&,
void*)> writer,
86 const char* mime =
nullptr,
void* ref =
nullptr)
override {
92 const char* mime =
nullptr,
void* ref =
nullptr)
override {
94 int len = writer(nop, ref);
99 int put(
Url&
url,
const char* mime,
const char* data,
int len = -1)
override {
105 int del(
Url&
url,
const char* mime =
nullptr,
const char* data =
nullptr,
106 int len = -1)
override {
113 const char* data =
nullptr,
int len = -1)
override {
115 this->
accept = acceptMime;
121 const char* data =
nullptr,
int len = -1)
override {
123 this->
accept = acceptMime;
137 if (sid !=
nullptr) {
153 int readln(uint8_t*
str,
int len,
bool incl_nl =
true)
override {
200 const char*
str(
const char* in) {
return in ==
nullptr ?
"" : in; }
203 virtual int connect(
const char* ip, uint16_t port) {
205 int rc = this->client_ptr->connect(ip, port);
206 uint64_t end = millis() +
client_ptr->getTimeout();
215 const char* data,
int len = -1) {
236 if (len == -1 && data !=
nullptr) {
245 if (
agent !=
nullptr) {
251 if (mime !=
nullptr) {
279 std::function<
size_t(Print&,
void*)> writer,
280 const char* mime =
nullptr,
void* ref =
nullptr) {
285 "HttpRequest::connecting to host %s port %d",
url.
host(),
325 if (written != len) {
327 "HttpRequest wrote %d bytes: expected %d", written, len);
329#if DLNA_CHECK_XML_LENGTH
331 size_t test_len = writer(test, ref);
332 if (strlen(test.
c_str()) != len) {
334 "HttpRequest test wrote %d bytes: expected %d / strlen: %d", test_len, len, strlen(test.
c_str()));
Http might reply with chunks. So we need to dechunk the data. see https://en.wikipedia....
Definition: HttpChunkReader.h:13
void open(Client &client)
Definition: HttpChunkReader.h:28
virtual int read(Client &client, uint8_t *str, int len)
Definition: HttpChunkReader.h:35
virtual int readln(Client &client, uint8_t *str, int len, bool incl_nl=true)
Definition: HttpChunkReader.h:55
int available()
Definition: HttpChunkReader.h:73
virtual int readlnInternal(Stream &client, uint8_t *str, int len, bool incl_nl=true)
Definition: HttpLineReader.h:18
Simple API to process get, put, post, del http requests I tried to use Arduino HttpClient,...
Definition: HttpRequest.h:27
Client * client_ptr
Definition: HttpRequest.h:188
void setConnection(const char *connection) override
Sets the connection type.
Definition: HttpRequest.h:171
HttpChunkReader chunk_reader
Definition: HttpRequest.h:192
HttpRequestHeader & request() override
Returns the request header.
Definition: HttpRequest.h:165
void stop() override
Stops the connection.
Definition: HttpRequest.h:70
HttpRequest()
Default constructor.
Definition: HttpRequest.h:30
const char * accept
Definition: HttpRequest.h:196
const char * str(const char *in)
Returns an empty string if input is null, otherwise returns the input.
Definition: HttpRequest.h:200
~HttpRequest() override
Destructor.
Definition: HttpRequest.h:42
HttpRequestHeader request_header
Definition: HttpRequest.h:190
void setHost(const char *host) override
Sets the host name for the requests.
Definition: HttpRequest.h:48
HttpReplyHeader & reply() override
Returns the reply header.
Definition: HttpRequest.h:162
HttpReplyHeader reply_header
Definition: HttpRequest.h:191
const char * connection
Definition: HttpRequest.h:195
int read(uint8_t *str, int len) override
Reads reply data.
Definition: HttpRequest.h:144
int unsubscribe(Url &url, const char *sid) override
Sends an UNSUBSCRIBE request.
Definition: HttpRequest.h:134
Url url
Definition: HttpRequest.h:189
int put(Url &url, const char *mime, const char *data, int len=-1) override
Sends a PUT request.
Definition: HttpRequest.h:99
void setAcceptsEncoding(const char *enc) override
Sets the accepted encodings.
Definition: HttpRequest.h:176
void setClient(Client &client) override
Sets the client to be used for the requests.
Definition: HttpRequest.h:45
int available() override
Returns the number of available bytes to read.
Definition: HttpRequest.h:62
ClientType default_client
Definition: HttpRequest.h:187
virtual int process(TinyMethodID method, Url &url, size_t len, std::function< size_t(Print &, void *)> writer, const char *mime=nullptr, void *ref=nullptr)
Definition: HttpRequest.h:278
bool connected() override
Checks if connected to the server.
Definition: HttpRequest.h:59
virtual int connect(const char *ip, uint16_t port)
opens a connection to the indicated host
Definition: HttpRequest.h:203
int post(Url &url, size_t len, std::function< size_t(Print &, void *)> writer, const char *mime=nullptr, void *ref=nullptr) override
Sends a POST request with streaming body.
Definition: HttpRequest.h:85
const char * accept_encoding
Definition: HttpRequest.h:197
int notify(Url &url, std::function< size_t(Print &, void *)> writer, const char *mime=nullptr, void *ref=nullptr) override
Sends a NOTIFY request with streaming body.
Definition: HttpRequest.h:91
int post(Url &url, const char *mime, const char *data, int len=-1) override
Sends a POST request with data.
Definition: HttpRequest.h:78
int get(Url &url, const char *acceptMime=nullptr, const char *data=nullptr, int len=-1) override
Sends a GET request.
Definition: HttpRequest.h:112
HttpRequest(ClientType &client)
Constructor with specified client.
Definition: HttpRequest.h:36
Client * client() override
Returns the client pointer.
Definition: HttpRequest.h:181
const char * agent
Definition: HttpRequest.h:194
int del(Url &url, const char *mime=nullptr, const char *data=nullptr, int len=-1) override
Sends a DELETE request.
Definition: HttpRequest.h:105
int head(Url &url, const char *acceptMime=nullptr, const char *data=nullptr, int len=-1) override
Sends a HEAD request.
Definition: HttpRequest.h:120
int readln(uint8_t *str, int len, bool incl_nl=true) override
Reads reply data up to the next new line.
Definition: HttpRequest.h:153
Str host_name
Definition: HttpRequest.h:193
virtual int process(TinyMethodID action, Url &url, const char *mime, const char *data, int len=-1)
sends request and reads the reply_header from the server
Definition: HttpRequest.h:214
void setTimeout(int ms) override
Sets the timeout.
Definition: HttpRequest.h:184
int subscribe(Url &url) override
Sends a SUBSCRIBE request.
Definition: HttpRequest.h:128
void setAgent(const char *agent) override
Sets the user agent.
Definition: HttpRequest.h:168
Abstract interface for HTTP client request functionality.
Definition: IHttpRequest.h:21
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
Heap-backed string utility used throughout tiny_dlna.
Definition: Str.h:27
bool isEmpty() const
True if empty.
Definition: Str.h:54
void add(const char *append)
Append C-string (ignored if nullptr)
Definition: Str.h:96
const char * c_str() const
C-string pointer to internal buffer.
Definition: Str.h:88
URL parser which breaks a full url string up into its individual parts.
Definition: Url.h:18
int port()
Definition: Url.h:46
const char * host()
Definition: Url.h:41
const char * url()
Definition: Url.h:39
const char * path()
Definition: Url.h:40
Definition: Allocator.h:13
const char * CONTENT_TYPE
Definition: HttpHeader.h:16
const char * methods[]
Definition: HttpHeader.h:50
const char * CONTENT_LENGTH
Definition: HttpHeader.h:17
const char * CON_CLOSE
Definition: HttpHeader.h:19
const char * HOST_C
Definition: HttpHeader.h:29
TinyMethodID
Definition: HttpHeader.h:35
@ T_DELETE
Definition: HttpHeader.h:41
@ T_UNSUBSCRIBE
Definition: HttpHeader.h:46
@ T_SUBSCRIBE
Definition: HttpHeader.h:47
@ T_HEAD
Definition: HttpHeader.h:38
@ T_GET
Definition: HttpHeader.h:37
@ T_PUT
Definition: HttpHeader.h:40
@ T_POST
Definition: HttpHeader.h:39
@ T_NOTIFY
Definition: HttpHeader.h:48
const char * ACCEPT
Definition: HttpHeader.h:23
const char * ACCEPT_ENCODING
Definition: HttpHeader.h:30
const char * ACCEPT_ALL
Definition: HttpHeader.h:24
const char * USER_AGENT
Definition: HttpHeader.h:26
const char * CONNECTION
Definition: HttpHeader.h:18