in sdk/src/azure/platform/az_curl.c [548:597]
static AZ_NODISCARD az_result _az_http_client_curl_send_request_impl_process(
CURL* ref_curl,
az_http_request const* request,
az_http_response* ref_response)
{
_az_PRECONDITION_NOT_NULL(ref_curl);
_az_PRECONDITION_NOT_NULL(request);
az_result result = AZ_ERROR_ARG;
struct curl_slist* list = NULL;
_az_RETURN_IF_FAILED(_az_http_client_curl_setup_headers(ref_curl, &list, request));
_az_RETURN_IF_FAILED(_az_http_client_curl_setup_url(ref_curl, request));
_az_RETURN_IF_FAILED(_az_http_client_curl_setup_response_redirect(ref_curl, ref_response));
az_http_method method;
_az_RETURN_IF_FAILED(az_http_request_get_method(request, &method));
if (az_span_is_content_equal(method, az_http_method_get()))
{
result = _az_http_client_curl_send_get_request(ref_curl);
}
else if (az_span_is_content_equal(method, az_http_method_delete()))
{
result = _az_http_client_curl_send_delete_request(ref_curl);
}
else if (az_span_is_content_equal(method, az_http_method_post()))
{
_az_RETURN_IF_FAILED(_az_http_client_curl_add_expect_header(ref_curl, &list));
result = _az_http_client_curl_send_post_request(ref_curl, request);
}
else if (az_span_is_content_equal(method, az_http_method_put()))
{
// As of CURL 7.12.1 CURLOPT_PUT is deprecated. PUT requests should be made using
// CURLOPT_UPLOAD
_az_RETURN_IF_FAILED(_az_http_client_curl_add_expect_header(ref_curl, &list));
result = _az_http_client_curl_send_upload_request(ref_curl, request);
}
else
{
return AZ_ERROR_HTTP_INVALID_METHOD_VERB;
}
// Clean custom headers previously appended
curl_slist_free_all(list);
return result;
}