Add the response body to thrown API exceptions, it's Often Handy(tm)

This commit is contained in:
Paul Betts
2013-05-22 03:04:21 -04:00
committed by Haacked
parent 7543d4d32e
commit b278e0b2d1
2 changed files with 17 additions and 30 deletions
+10 -25
View File
@@ -25,11 +25,14 @@ namespace Octokit.Http
{
Ensure.ArgumentNotNull(responseMessage, "responseMessage");
var completedResponse = responseMessage.EnsureSuccess();
string responseBody = completedResponse != null
? await completedResponse.Content.ReadAsStringAsync()
: null;
string responseBody = null;
using (var content = responseMessage.Content)
{
if (content != null)
{
responseBody = await responseMessage.Content.ReadAsStringAsync();
}
}
var response = new ApiResponse<T>
{
@@ -38,7 +41,9 @@ namespace Octokit.Http
};
foreach (var h in responseMessage.Headers)
{
response.Headers.Add(h.Key, h.Value.First());
}
return response;
}
@@ -76,24 +81,4 @@ namespace Octokit.Http
return requestMessage;
}
}
internal static class HttpClientAdapterExtensions
{
public static HttpResponseMessage EnsureSuccess(this HttpResponseMessage response)
{
Ensure.ArgumentNotNull(response, "response");
if (response.IsSuccessStatusCode)
{
return response;
}
var content = response.Content;
if (content != null)
{
content.Dispose();
}
return null;
}
}
}