From e19765ece9bbaf93d2e1257ddb374a5afff049e9 Mon Sep 17 00:00:00 2001 From: Haacked Date: Thu, 3 Oct 2013 09:27:25 -0700 Subject: [PATCH] Do not overwrite existing Accept headers --- Octokit.Tests/Http/JsonHttpPipelineTests.cs | 15 ++++++++++++++- Octokit/Http/JsonHttpPipeline.cs | 6 +++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Octokit.Tests/Http/JsonHttpPipelineTests.cs b/Octokit.Tests/Http/JsonHttpPipelineTests.cs index 9f0f7b93..8b91a1ba 100644 --- a/Octokit.Tests/Http/JsonHttpPipelineTests.cs +++ b/Octokit.Tests/Http/JsonHttpPipelineTests.cs @@ -18,7 +18,7 @@ namespace Octokit.Tests.Http public class TheSerializeRequestMethod { [Fact] - public void SetsRequestHeader() + public void SetsRequestAcceptHeader() { var request = new Request(); var jsonPipeline = new JsonHttpPipeline(); @@ -29,6 +29,19 @@ namespace Octokit.Tests.Http Assert.Equal("application/vnd.github.v3+json; charset=utf-8", request.Headers["Accept"]); } + [Fact] + public void DoesNotChangeExistingAcceptsHeader() + { + var request = new Request(); + request.Headers.Add("Accept", "application/vnd.github.manifold-preview; charset=utf-8"); + var jsonPipeline = new JsonHttpPipeline(); + + jsonPipeline.SerializeRequest(request); + + Assert.Contains("Accept", request.Headers.Keys); + Assert.Equal("application/vnd.github.manifold-preview; charset=utf-8", request.Headers["Accept"]); + } + [Fact] public void LeavesStringBodyAlone() { diff --git a/Octokit/Http/JsonHttpPipeline.cs b/Octokit/Http/JsonHttpPipeline.cs index e42bd1b1..90d90295 100644 --- a/Octokit/Http/JsonHttpPipeline.cs +++ b/Octokit/Http/JsonHttpPipeline.cs @@ -25,7 +25,11 @@ namespace Octokit.Http { Ensure.ArgumentNotNull(request, "request"); - request.Headers["Accept"] = "application/vnd.github.v3+json; charset=utf-8"; + if (!request.Headers.ContainsKey("Accept")) + { + request.Headers["Accept"] = "application/vnd.github.v3+json; charset=utf-8"; + } + if (request.Endpoint != null && request.Endpoint.ToString().Contains("releases")) request.Headers["Accept"] = "application/vnd.github.manifold-preview; charset=utf-8";