ESPHome 2026.2.3
Loading...
Searching...
No Matches
utils.h
Go to the documentation of this file.
1#pragma once
2#ifdef USE_ESP32
3
4#include <esp_http_server.h>
5#include <string>
7
9
12size_t url_decode(char *str);
13
14bool request_has_header(httpd_req_t *req, const char *name);
15optional<std::string> request_get_header(httpd_req_t *req, const char *name);
16optional<std::string> request_get_url_query(httpd_req_t *req);
17optional<std::string> query_key_value(const char *query_url, size_t query_len, const char *key);
18inline optional<std::string> query_key_value(const std::string &query_url, const std::string &key) {
19 return query_key_value(query_url.c_str(), query_url.size(), key.c_str());
20}
21
22// Helper function for case-insensitive character comparison
23inline bool char_equals_ci(char a, char b) { return ::tolower(a) == ::tolower(b); }
24
25// Helper function for case-insensitive string region comparison
26bool str_ncmp_ci(const char *s1, const char *s2, size_t n);
27
28// Bounded case-insensitive string search (like strcasestr but length-bounded)
29const char *strcasestr_n(const char *haystack, size_t haystack_len, const char *needle);
30
31} // namespace esphome::web_server_idf
32#endif // USE_ESP32
bool char_equals_ci(char a, char b)
Definition utils.h:23
optional< std::string > request_get_url_query(httpd_req_t *req)
Definition utils.cpp:57
optional< std::string > request_get_header(httpd_req_t *req, const char *name)
Definition utils.cpp:40
optional< std::string > query_key_value(const char *query_url, size_t query_len, const char *key)
Definition utils.cpp:75
const char * strcasestr_n(const char *haystack, size_t haystack_len, const char *needle)
Definition utils.cpp:102
bool str_ncmp_ci(const char *s1, const char *s2, size_t n)
Definition utils.cpp:92
size_t url_decode(char *str)
Decode URL-encoded string in-place (e.g., %20 -> space, + -> space) Returns the new length of the dec...
Definition utils.cpp:15
bool request_has_header(httpd_req_t *req, const char *name)
Definition utils.cpp:38