diff --git a/src/asynchttprequest.cpp b/src/asynchttprequest.cpp index a214bd8..362b66f 100644 --- a/src/asynchttprequest.cpp +++ b/src/asynchttprequest.cpp @@ -138,7 +138,8 @@ bool AsyncHttpRequest::taskRunning() const return false; } -tl::expected AsyncHttpRequest::createClient(std::string_view url, esp_http_client_method_t method) +tl::expected AsyncHttpRequest::createClient(std::string_view url, esp_http_client_method_t method, + int timeout_ms) { if (m_client) { @@ -151,6 +152,7 @@ tl::expected AsyncHttpRequest::createClient(std::string_view config.url = url.data(); config.max_authorization_retries = 1; config.method = method; + config.timeout_ms = timeout_ms; config.event_handler = staticHttpEventHandler; config.user_data = this; @@ -193,7 +195,8 @@ bool AsyncHttpRequest::hasClient() const tl::expected AsyncHttpRequest::start(std::string_view url, esp_http_client_method_t method, const std::map &requestHeaders, - std::string_view requestBody) + std::string_view requestBody, + int timeout_ms) { if (!m_taskHandle) { @@ -215,7 +218,7 @@ tl::expected AsyncHttpRequest::start(std::string_view url, return tl::make_unexpected(msg); } - if (auto result = createClient(url, method); !result) + if (auto result = createClient(url, method, timeout_ms); !result) return tl::make_unexpected(std::move(result).error()); for (auto iter = std::cbegin(requestHeaders); iter != std::cend(requestHeaders); iter++) @@ -259,7 +262,8 @@ tl::expected AsyncHttpRequest::start(std::string_view url, tl::expected AsyncHttpRequest::retry(std::optional url, std::optional method, const std::map &requestHeaders, - std::string_view requestBody) + std::string_view requestBody, + std::optional timeout_ms) { if (!m_taskHandle) { @@ -297,6 +301,14 @@ tl::expected AsyncHttpRequest::retry(std::optionalfirst, iter->second); result != ESP_OK) { diff --git a/src/asynchttprequest.h b/src/asynchttprequest.h index 62c1900..9bde8de 100644 --- a/src/asynchttprequest.h +++ b/src/asynchttprequest.h @@ -29,18 +29,21 @@ public: bool taskRunning() const; tl::expected createClient(std::string_view url, - esp_http_client_method_t method = HTTP_METHOD_GET); + esp_http_client_method_t method = HTTP_METHOD_GET, + int timeout_ms = 0); tl::expected deleteClient(); bool hasClient() const; tl::expected start(std::string_view url, esp_http_client_method_t method = HTTP_METHOD_GET, const std::map &requestHeaders = {}, - std::string_view requestBody = {}); + std::string_view requestBody = {}, + int timeout_ms = 0); tl::expected retry(std::optional url = std::nullopt, std::optional method = std::nullopt, const std::map &requestHeaders = {}, - std::string_view requestBody = {}); + std::string_view requestBody = {}, + std::optional timeout_ms = {}); tl::expected abort(); bool inProgress() const;