3#if defined(USE_ESP32) && defined(USE_WEBSERVER_OTA)
7#include <esp_http_server.h>
9#include <multipart_parser.h>
40 size_t parse(
const char *data,
size_t len);
49 static int on_header_field(multipart_parser *parser,
const char *at,
size_t length);
50 static int on_header_value(multipart_parser *parser,
const char *at,
size_t length);
51 static int on_part_data(multipart_parser *parser,
const char *at,
size_t length);
52 static int on_part_data_end(multipart_parser *parser);
54 multipart_parser *parser_{
nullptr};
55 multipart_parser_settings settings_{};
58 std::string current_header_field_;
63 void process_header_(
const char *value,
size_t length);
74void extract_header_param(
const char *header,
size_t header_len,
const char *param, std::string &out);
82void str_trim(
const char *str,
size_t len, std::string &out);
void set_part_complete_callback(PartCompleteCallback &&callback)
std::function< void()> PartCompleteCallback
std::function< void(const uint8_t *data, size_t len)> DataCallback
const Part & get_current_part() const
MultipartReader(const std::string &boundary)
void set_data_callback(DataCallback &&callback)
size_t parse(const char *data, size_t len)
void extract_header_param(const char *header, size_t header_len, const char *param, std::string &out)
bool parse_multipart_boundary(const char *content_type, const char **boundary_start, size_t *boundary_len)
void str_trim(const char *str, size_t len, std::string &out)
bool str_startswith_case_insensitive(const char *str, size_t str_len, const char *prefix)