in src/aws-cpp-sdk-core/source/http/curl/CurlHttpClient.cpp [458:515]
void SetOptCodeForHttpMethod(CURL* requestHandle, const std::shared_ptr<HttpRequest>& request)
{
switch (request->GetMethod())
{
case HttpMethod::HTTP_GET:
curl_easy_setopt(requestHandle, CURLOPT_HTTPGET, 1L);
break;
case HttpMethod::HTTP_POST:
if (request->HasHeader(Aws::Http::CONTENT_LENGTH_HEADER) && request->GetHeaderValue(Aws::Http::CONTENT_LENGTH_HEADER) == "0")
{
curl_easy_setopt(requestHandle, CURLOPT_CUSTOMREQUEST, "POST");
}
else
{
curl_easy_setopt(requestHandle, CURLOPT_POST, 1L);
}
break;
case HttpMethod::HTTP_PUT:
if ((!request->HasHeader(Aws::Http::CONTENT_LENGTH_HEADER) || request->GetHeaderValue(Aws::Http::CONTENT_LENGTH_HEADER) == "0") &&
!request->HasHeader(Aws::Http::TRANSFER_ENCODING_HEADER))
{
curl_easy_setopt(requestHandle, CURLOPT_CUSTOMREQUEST, "PUT");
}
else
{
#if LIBCURL_VERSION_NUM >= 0x070c01 // 7.12.1
curl_easy_setopt(requestHandle, CURLOPT_UPLOAD, 1L);
#else
curl_easy_setopt(requestHandle, CURLOPT_PUT, 1L);
#endif
}
break;
case HttpMethod::HTTP_HEAD:
curl_easy_setopt(requestHandle, CURLOPT_HTTPGET, 1L);
curl_easy_setopt(requestHandle, CURLOPT_NOBODY, 1L);
break;
case HttpMethod::HTTP_PATCH:
if ((!request->HasHeader(Aws::Http::CONTENT_LENGTH_HEADER)|| request->GetHeaderValue(Aws::Http::CONTENT_LENGTH_HEADER) == "0") &&
!request->HasHeader(Aws::Http::TRANSFER_ENCODING_HEADER))
{
curl_easy_setopt(requestHandle, CURLOPT_CUSTOMREQUEST, "PATCH");
}
else
{
curl_easy_setopt(requestHandle, CURLOPT_POST, 1L);
curl_easy_setopt(requestHandle, CURLOPT_CUSTOMREQUEST, "PATCH");
}
break;
case HttpMethod::HTTP_DELETE:
curl_easy_setopt(requestHandle, CURLOPT_CUSTOMREQUEST, "DELETE");
break;
default:
assert(0);
curl_easy_setopt(requestHandle, CURLOPT_CUSTOMREQUEST, "GET");
break;
}
}