Preparations for client auth

This commit is contained in:
2024-01-29 13:21:53 +01:00
parent 06ca1a6881
commit e1a142e27a
2 changed files with 27 additions and 30 deletions

View File

@@ -140,7 +140,8 @@ bool AsyncHttpRequest::taskRunning() const
} }
std::expected<void, std::string> AsyncHttpRequest::createClient(std::string_view url, esp_http_client_method_t method, std::expected<void, std::string> AsyncHttpRequest::createClient(std::string_view url, esp_http_client_method_t method,
int timeout_ms) int timeout_ms,
const std::optional<cpputils::ClientAuth> &clientAuth)
{ {
if (m_client) if (m_client)
{ {
@@ -195,9 +196,10 @@ bool AsyncHttpRequest::hasClient() const
} }
std::expected<void, std::string> AsyncHttpRequest::start(std::string_view url, std::expected<void, std::string> AsyncHttpRequest::start(std::string_view url,
esp_http_client_method_t method, esp_http_client_method_t method,
const std::map<std::string, std::string> &requestHeaders, const std::map<std::string, std::string> &requestHeaders,
std::string_view requestBody, int timeout_ms) std::string_view requestBody, int timeout_ms,
const std::optional<cpputils::ClientAuth> &clientAuth)
{ {
if (!m_taskHandle) if (!m_taskHandle)
{ {
@@ -218,7 +220,7 @@ std::expected<void, std::string> AsyncHttpRequest::start(std::string_view url,
m_client = {}; m_client = {};
} }
if (auto result = createClient(url, method, timeout_ms); !result) if (auto result = createClient(url, method, timeout_ms, clientAuth); !result)
return std::unexpected(std::move(result).error()); return std::unexpected(std::move(result).error());
for (auto iter = std::cbegin(requestHeaders); iter != std::cend(requestHeaders); iter++) for (auto iter = std::cbegin(requestHeaders); iter != std::cend(requestHeaders); iter++)
@@ -260,13 +262,10 @@ std::expected<void, std::string> AsyncHttpRequest::start(std::string_view url,
} }
std::expected<void, std::string> AsyncHttpRequest::retry(std::optional<std::string_view> url, std::expected<void, std::string> AsyncHttpRequest::retry(std::optional<std::string_view> url,
std::optional<esp_http_client_method_t> method, std::optional<esp_http_client_method_t> method,
const std::map<std::string, std::string> &requestHeaders, const std::map<std::string, std::string> &requestHeaders,
std::string_view requestBody std::string_view requestBody, std::optional<int> timeout_ms,
#ifndef OLD_IDF const std::optional<cpputils::ClientAuth> &clientAuth)
, std::optional<int> timeout_ms
#endif
)
{ {
if (!m_taskHandle) if (!m_taskHandle)
{ {
@@ -304,7 +303,6 @@ std::expected<void, std::string> AsyncHttpRequest::retry(std::optional<std::stri
return std::unexpected(std::move(msg)); return std::unexpected(std::move(msg));
} }
#ifndef OLD_IDF
if (timeout_ms) if (timeout_ms)
if (const auto result = m_client.set_timeout_ms(*timeout_ms); result != ESP_OK) if (const auto result = m_client.set_timeout_ms(*timeout_ms); result != ESP_OK)
{ {
@@ -312,7 +310,6 @@ std::expected<void, std::string> AsyncHttpRequest::retry(std::optional<std::stri
ESP_LOGW(TAG, "%.*s", msg.size(), msg.data()); ESP_LOGW(TAG, "%.*s", msg.size(), msg.data());
return std::unexpected(std::move(msg)); return std::unexpected(std::move(msg));
} }
#endif
for (auto iter = std::cbegin(requestHeaders); iter != std::cend(requestHeaders); iter++) for (auto iter = std::cbegin(requestHeaders); iter != std::cend(requestHeaders); iter++)
if (const auto result = m_client.set_header(iter->first, iter->second); result != ESP_OK) if (const auto result = m_client.set_header(iter->first, iter->second); result != ESP_OK)

View File

@@ -12,10 +12,11 @@
#include <freertos/task.h> #include <freertos/task.h>
#include <esp_err.h> #include <esp_err.h>
// local includes // 3rdparty lib includes
#include "wrappers/http_client.h" #include <wrappers/http_client.h>
#include "wrappers/event_group.h" #include <wrappers/event_group.h>
#include "taskutils.h" #include <taskutils.h>
#include <clientauth.h>
class AsyncHttpRequest class AsyncHttpRequest
{ {
@@ -28,23 +29,22 @@ public:
bool taskRunning() const; bool taskRunning() const;
std::expected<void, std::string> createClient(std::string_view url, std::expected<void, std::string> 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); int timeout_ms = 0,
const std::optional<cpputils::ClientAuth> &clientAuth = {});
std::expected<void, std::string> deleteClient(); std::expected<void, std::string> deleteClient();
bool hasClient() const; bool hasClient() const;
std::expected<void, std::string> start(std::string_view url, std::expected<void, std::string> start(std::string_view url,
esp_http_client_method_t method = HTTP_METHOD_GET, esp_http_client_method_t method = HTTP_METHOD_GET,
const std::map<std::string, std::string> &requestHeaders = {}, const std::map<std::string, std::string> &requestHeaders = {},
std::string_view requestBody = {}, int timeout_ms = 0); std::string_view requestBody = {}, int timeout_ms = 0,
const std::optional<cpputils::ClientAuth> &clientAuth = {});
std::expected<void, std::string> retry(std::optional<std::string_view> url = std::nullopt, std::expected<void, std::string> retry(std::optional<std::string_view> url = std::nullopt,
std::optional<esp_http_client_method_t> method = std::nullopt, std::optional<esp_http_client_method_t> method = std::nullopt,
const std::map<std::string, std::string> &requestHeaders = {}, const std::map<std::string, std::string> &requestHeaders = {},
std::string_view requestBody = {} std::string_view requestBody = {}, std::optional<int> timeout_ms = {},
#ifndef OLD_IDF const std::optional<cpputils::ClientAuth> &clientAuth = {});
,std::optional<int> timeout_ms = {}
#endif
);
std::expected<void, std::string> abort(); std::expected<void, std::string> abort();
bool inProgress() const; bool inProgress() const;