From: Vikram Dattu Date: Tue, 23 Apr 2019 13:53:20 +0000 (+0530) Subject: Add a `esp_http_client_set_redirection` function. X-Git-Tag: v3.3-rc~72^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c9b1e1df60629b24b881cc782c2214485237f819;p=esp-idf Add a `esp_http_client_set_redirection` function. When using direct operations instead of `esp_http_client_perform`, we need a way to set redirection URL when we get 30x response codes. Added the function for the same. User can now check status code and call `esp_http_client_set_redirection` function to enable redirection. Related change in adf: https://gitlab.espressif.cn:6688/adf/esp-adf-internal/merge_requests/187 Closes https://github.com/espressif/esp-idf/issues/2712 Signed-off-by: Vikram Dattu --- diff --git a/components/esp_http_client/esp_http_client.c b/components/esp_http_client/esp_http_client.c index 91d344e055..d1283aebe3 100644 --- a/components/esp_http_client/esp_http_client.c +++ b/components/esp_http_client/esp_http_client.c @@ -589,6 +589,17 @@ esp_err_t esp_http_client_cleanup(esp_http_client_handle_t client) return ESP_OK; } +esp_err_t esp_http_client_set_redirection(esp_http_client_handle_t client) +{ + if (client == NULL) { + return ESP_ERR_INVALID_ARG; + } + if (client->location == NULL) { + return ESP_ERR_INVALID_ARG; + } + return esp_http_client_set_url(client, client->location); +} + static esp_err_t esp_http_check_response(esp_http_client_handle_t client) { char *auth_header = NULL; diff --git a/components/esp_http_client/include/esp_http_client.h b/components/esp_http_client/include/esp_http_client.h index 160d16fa59..18b68b8833 100644 --- a/components/esp_http_client/include/esp_http_client.h +++ b/components/esp_http_client/include/esp_http_client.h @@ -376,6 +376,18 @@ esp_err_t esp_http_client_cleanup(esp_http_client_handle_t client); */ esp_http_client_transport_t esp_http_client_get_transport_type(esp_http_client_handle_t client); +/** + * @brief Set redirection URL. + * When received the 30x code from the server, the client stores the redirect URL provided by the server. + * This function will set the current URL to redirect to enable client to execute the redirection request. + * + * @param[in] client The esp_http_client handle + * + * @return + * - ESP_OK + * - ESP_FAIL + */ +esp_err_t esp_http_client_set_redirection(esp_http_client_handle_t client); #ifdef __cplusplus }