in src/WebJobs.Extensions.DurableTask/Listener/TaskHttpActivityShim.cs [107:161]
private async Task<HttpRequestMessage> ConvertToHttpRequestMessage(DurableHttpRequest durableHttpRequest)
{
string contentType = "";
HttpRequestMessage requestMessage = new HttpRequestMessage(durableHttpRequest.Method, durableHttpRequest.Uri);
if (durableHttpRequest.Headers != null)
{
foreach (KeyValuePair<string, StringValues> entry in durableHttpRequest.Headers)
{
if (entry.Key.Equals("Content-Type", StringComparison.OrdinalIgnoreCase))
{
foreach (string value in entry.Value)
{
if (value.Contains("multipart"))
{
throw new FunctionFailedException("Multipart content is not supported with CallHttpAsync.");
}
else
{
contentType = value;
}
}
}
else
{
requestMessage.Headers.Add(entry.Key, (IEnumerable<string>)entry.Value);
}
}
}
if (durableHttpRequest.Content != null)
{
if (contentType == "")
{
contentType = "text/plain";
}
if (string.Equals(contentType, "application/x-www-form-urlencoded", StringComparison.OrdinalIgnoreCase))
{
requestMessage.Content = new StringContent(durableHttpRequest.Content, Encoding.UTF8, contentType);
}
else
{
requestMessage.Content = new StringContent(durableHttpRequest.Content);
requestMessage.Content.Headers.ContentType = new MediaTypeHeaderValue(contentType);
}
}
if (durableHttpRequest.TokenSource != null)
{
string accessToken = await durableHttpRequest.TokenSource.GetTokenAsync();
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
}
return requestMessage;
}