diff --git a/CMakeLists.txt b/CMakeLists.txt index c68151f..0f1f775 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,6 +30,7 @@ set(dependencies esp_system # esp_http_client esp_websocket_client + nghttp tcp_transport cpputils diff --git a/src/espstrutils.cpp b/src/espstrutils.cpp index a07e6ce..739805c 100644 --- a/src/espstrutils.cpp +++ b/src/espstrutils.cpp @@ -2,6 +2,7 @@ // esp-idf includes #include +#include // 3rdparty lib includes #include @@ -57,4 +58,13 @@ void urldecode(char *dst, const char *src) *dst++ = '\0'; } +tl::expected urlverify(std::string_view str) +{ + http_parser_url puri; + http_parser_url_init(&puri); + if (const auto result = http_parser_parse_url(str.data(), str.size(), 0, &puri); result != 0) + return tl::make_unexpected(fmt::format("http_parser_parse_url() failed parsing the url with {}", result)); + return {}; +} + } // namespace espcpputils diff --git a/src/espstrutils.h b/src/espstrutils.h index 8694162..be51a59 100644 --- a/src/espstrutils.h +++ b/src/espstrutils.h @@ -6,10 +6,15 @@ // esp-idf includes #include +// 3rdparty lib includes +#include + namespace espcpputils { std::string toString(sntp_sync_mode_t val); void urldecode(char *dst, const char *src); +tl::expected urlverify(std::string_view str); + } // namespace espcpputils