diff --git a/Octokit.Tests/Http/HttpClientAdapterTests.cs b/Octokit.Tests/Http/HttpClientAdapterTests.cs index 98f90e71..f0b2dc5b 100644 --- a/Octokit.Tests/Http/HttpClientAdapterTests.cs +++ b/Octokit.Tests/Http/HttpClientAdapterTests.cs @@ -5,8 +5,8 @@ using System.Net.Http; using System.Text; using System.Threading.Tasks; using Octokit.Http; -using Octokit.Tests.Helpers; using Xunit; +using Xunit.Extensions; namespace Octokit.Tests.Http { @@ -49,11 +49,13 @@ namespace Octokit.Tests.Http public class TheBuildResponseMethod { - [Fact] - public async Task BuildsResponseFromResponseMessage() + [Theory] + [InlineData(HttpStatusCode.OK)] + [InlineData(HttpStatusCode.NotFound)] + public async Task BuildsResponseFromResponseMessage(HttpStatusCode httpStatusCode) { var responseMessage = new HttpResponseMessage { - StatusCode = HttpStatusCode.OK, + StatusCode = httpStatusCode, Content = new ByteArrayContent(Encoding.UTF8.GetBytes("{}")), Headers = { @@ -72,7 +74,7 @@ namespace Octokit.Tests.Http Assert.Equal("ele", lastHeader.Key); Assert.Equal("phant", lastHeader.Value); Assert.Equal("{}", response.Body); - Assert.Equal(HttpStatusCode.OK, response.StatusCode); + Assert.Equal(httpStatusCode, response.StatusCode); } } diff --git a/Octokit/Http/HttpClientAdapter.cs b/Octokit/Http/HttpClientAdapter.cs index 9cfbcd5d..ed95ee1d 100644 --- a/Octokit/Http/HttpClientAdapter.cs +++ b/Octokit/Http/HttpClientAdapter.cs @@ -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 { @@ -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; - } - } }