From 4858184e19d4bafa6d4758211d2950dd51333f3d Mon Sep 17 00:00:00 2001 From: Shubham Kulkarni Date: Thu, 12 Mar 2020 19:12:27 +0530 Subject: [PATCH] esp_http_client: Add helper API to read larger data chunks from HTTP Stream --- components/esp_http_client/esp_http_client.c | 13 +++++++++++++ .../esp_http_client/include/esp_http_client.h | 14 ++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/components/esp_http_client/esp_http_client.c b/components/esp_http_client/esp_http_client.c index 69ced3406..570496a4b 100644 --- a/components/esp_http_client/esp_http_client.c +++ b/components/esp_http_client/esp_http_client.c @@ -1315,3 +1315,16 @@ void esp_http_client_add_auth(esp_http_client_handle_t client) ESP_LOGW(TAG, "This request requires authentication, but does not provide header information for that"); } } + +int esp_http_client_read_response(esp_http_client_handle_t client, char *buffer, int len) +{ + int read_len = 0; + while (read_len < len) { + int data_read = esp_http_client_read(client, buffer + read_len, len - read_len); + if (data_read <= 0) { + return read_len; + } + read_len += data_read; + } + return read_len; +} diff --git a/components/esp_http_client/include/esp_http_client.h b/components/esp_http_client/include/esp_http_client.h index 8d9243a0b..b1c9aae32 100644 --- a/components/esp_http_client/include/esp_http_client.h +++ b/components/esp_http_client/include/esp_http_client.h @@ -497,6 +497,20 @@ void esp_http_client_add_auth(esp_http_client_handle_t client); */ bool esp_http_client_is_complete_data_received(esp_http_client_handle_t client); +/** + * @brief Helper API to read larger data chunks + * This is a helper API which internally calls `esp_http_client_read` multiple times till the end of data is reached or till the buffer gets full. + * + * @param[in] client The esp_http_client handle + * @param buffer The buffer + * @param[in] len The buffer length + * + * @return + * - Length of data was read + */ + +int esp_http_client_read_response(esp_http_client_handle_t client, char *buffer, int len); + #ifdef __cplusplus } #endif