6#include <esp_http_server.h>
20class ListEntitiesIterator;
23namespace web_server_idf {
28 const std::string &
name()
const {
return this->
name_; }
44 void addHeader(
const char *name,
const char *value);
82 void print(
float value);
84 void write(uint8_t c) { this->
content_.push_back(
static_cast<char>(c)); }
109 http_method
method()
const {
return static_cast<http_method
>(this->
req_->method); }
110 std::string
url()
const;
111 std::string
host()
const;
115#ifdef USE_WEBSERVER_AUTH
116 bool authenticate(
const char *username,
const char *password)
const;
124 void send(
int code,
const char *content_type =
nullptr,
const char *content =
nullptr);
139 const size_t data_size) {
158 std::string
arg(
const std::string &name) {
161 return param->value();
166 operator httpd_req_t *()
const {
return this->
req_; }
213#ifdef USE_WEBSERVER_OTA
229 size_t len,
bool final) {}
269 bool try_send_nodefer(
const char *
message,
const char *event =
nullptr, uint32_t
id = 0, uint32_t reconnect = 0);
306 return request->
method() == HTTP_GET && request->
url() == this->
url_;
313 void try_send_nodefer(
const char *
message,
const char *event =
nullptr, uint32_t
id = 0, uint32_t reconnect = 0);
344 void addHeader(
const char *name,
const char *value) { this->
headers_.push_back({name, value}); }
Minimal static vector - saves memory by avoiding std::vector overhead.
This class allows users to create a web server with their ESP nodes.
~AsyncEventSource() override
AsyncEventSource(std::string url, esphome::web_server::WebServer *ws)
std::vector< AsyncEventSourceResponse * > sessions_
void onConnect(connect_handler_t cb)
void deferrable_send_state(void *source, const char *event_type, message_generator_t *message_generator)
esphome::web_server::WebServer * web_server_
bool canHandle(AsyncWebServerRequest *request) const override
void try_send_nodefer(const char *message, const char *event=nullptr, uint32_t id=0, uint32_t reconnect=0)
void handleRequest(AsyncWebServerRequest *request) override
connect_handler_t on_connect_
static void destroy(void *p)
std::vector< DeferredEvent > deferred_queue_
void deferrable_send_state(void *source, const char *event_type, message_generator_t *message_generator)
esphome::web_server::WebServer * web_server_
void deq_push_back_with_dedup_(void *source, message_generator_t *message_generator)
AsyncEventSource * server_
void process_deferred_queue_()
static constexpr uint16_t MAX_CONSECUTIVE_SEND_FAILURES
std::unique_ptr< esphome::web_server::ListEntitiesIterator > entities_iterator_
uint16_t consecutive_send_failures_
bool try_send_nodefer(const char *message, const char *event=nullptr, uint32_t id=0, uint32_t reconnect=0)
std::string event_buffer_
void print(const char *str)
void void write(uint8_t c)
AsyncResponseStream(const AsyncWebServerRequest *req)
void print(const std::string &str)
void printf(const char *fmt,...) __attribute__((format(printf
size_t get_content_size() const override
const char * get_content_data() const override
virtual bool canHandle(AsyncWebServerRequest *request) const
virtual void handleRequest(AsyncWebServerRequest *request)
virtual ~AsyncWebHandler()
virtual void handleUpload(AsyncWebServerRequest *request, const std::string &filename, size_t index, uint8_t *data, size_t len, bool final)
virtual void handleBody(AsyncWebServerRequest *request, uint8_t *data, size_t len, size_t index, size_t total)
virtual bool isRequestHandlerTrivial() const
AsyncWebParameter(std::string name, std::string value)
const std::string & name() const
const std::string & value() const
std::function< void(AsyncWebServerRequest *request)> on_not_found_
static esp_err_t request_post_handler(httpd_req_t *r)
AsyncWebServer(uint16_t port)
std::vector< AsyncWebHandler * > handlers_
AsyncWebHandler & addHandler(AsyncWebHandler *handler)
esp_err_t request_handler_(AsyncWebServerRequest *request) const
esp_err_t handle_multipart_upload_(httpd_req_t *r, const char *content_type)
httpd_handle_t get_server()
static void safe_close_with_shutdown(httpd_handle_t hd, int sockfd)
void onNotFound(std::function< void(AsyncWebServerRequest *request)> fn)
static esp_err_t request_handler(httpd_req_t *r)
AsyncWebParameter * getParam(const std::string &name)
AsyncWebServerResponse * beginResponse(int code, const char *content_type, const uint8_t *data, const size_t data_size)
optional< std::string > get_header(const char *name) const
bool hasArg(const char *name)
void send(AsyncWebServerResponse *response)
size_t contentLength() const
AsyncWebServerResponse * beginResponse(int code, const char *content_type, const std::string &content)
std::string arg(const std::string &name)
AsyncWebServerResponse * beginResponse(int code, const char *content_type)
bool hasHeader(const char *name) const
void init_response_(AsyncWebServerResponse *rsp, int code, const char *content_type)
bool hasParam(const std::string &name)
http_method method() const
AsyncWebServerRequest(httpd_req_t *req)
void requestAuthentication(const char *realm=nullptr) const
AsyncWebServerResponse * rsp_
AsyncResponseStream * beginResponseStream(const char *content_type)
bool authenticate(const char *username, const char *password) const
AsyncWebServerRequest(httpd_req_t *req, std::string post_query)
std::vector< AsyncWebParameter * > params_
void redirect(const std::string &url)
const char * get_content_data() const override
size_t get_content_size() const override
AsyncWebServerResponseContent(const AsyncWebServerRequest *req, std::string content)
const char * get_content_data() const override
AsyncWebServerResponseEmpty(const AsyncWebServerRequest *req)
size_t get_content_size() const override
virtual ~AsyncWebServerResponse()
const AsyncWebServerRequest * req_
virtual const char * get_content_data() const =0
AsyncWebServerResponse(const AsyncWebServerRequest *req)
virtual size_t get_content_size() const =0
void addHeader(const char *name, const char *value)
AsyncWebServerResponseProgmem(const AsyncWebServerRequest *req, const uint8_t *data, const size_t size)
size_t get_content_size() const override
const char * get_content_data() const override
std::string(esphome::web_server::WebServer *, void *) message_generator_t
class esphome::web_server_idf::AsyncEventSourceResponse __attribute__
Providing packet encoding functions for exchanging data with a remote host.
message_generator_t * message_generator_
bool operator==(const DeferredEvent &test) const
DeferredEvent(void *source, message_generator_t *message_generator)
friend class AsyncEventSourceResponse