JsonHttpPipeline only deserializes JSON responses

The JsonHttpPipeline should only try to deserialize responses that have
a Content-Type of application/json.
This commit is contained in:
Haacked
2013-10-06 21:05:18 -07:00
parent 9a33c68dbc
commit fa1473264c
6 changed files with 60 additions and 4 deletions

View File

@@ -26,11 +26,13 @@ namespace Octokit.Http
Ensure.ArgumentNotNull(responseMessage, "responseMessage");
string responseBody = null;
string contentType = null;
using (var content = responseMessage.Content)
{
if (content != null)
{
responseBody = await responseMessage.Content.ReadAsStringAsync();
contentType = GetContentType(content);
}
}
@@ -38,6 +40,7 @@ namespace Octokit.Http
{
Body = responseBody,
StatusCode = responseMessage.StatusCode,
ContentType = contentType
};
foreach (var h in responseMessage.Headers)
@@ -56,7 +59,9 @@ namespace Octokit.Http
{
requestMessage = new HttpRequestMessage(request.Method, request.Endpoint);
foreach (var header in request.Headers)
{
requestMessage.Headers.Add(header.Key, header.Value);
}
var body = request.Body as string;
if (body != null)
@@ -80,5 +85,14 @@ namespace Octokit.Http
return requestMessage;
}
static string GetContentType(HttpContent httpContent)
{
if (httpContent.Headers != null && httpContent.Headers.ContentType != null)
{
return httpContent.Headers.ContentType.MediaType;
}
return null;
}
}
}