Skip to content

Commit 323fb60

Browse files
committed
Wrapping up the PR
1 parent bb8c95f commit 323fb60

File tree

5 files changed

+23
-27
lines changed

5 files changed

+23
-27
lines changed

src/RestSharp/KnownHeaders.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
//
1515

1616
// ReSharper disable InconsistentNaming
17+
// ReSharper disable MemberCanBePrivate.Global
1718

1819
namespace RestSharp;
1920

@@ -32,4 +33,13 @@ public static class KnownHeaders {
3233
public const string LastModified = "Last-Modified";
3334
public const string ContentMD5 = "Content-MD5";
3435
public const string Host = "Host";
35-
}
36+
37+
internal static readonly string[] ContentHeaders = {
38+
Allow, Expires, ContentDisposition, ContentEncoding, ContentLanguage, ContentLength, ContentLocation, ContentRange, ContentType, ContentMD5,
39+
LastModified
40+
};
41+
42+
static readonly HashSet<string> ContentHeadersHash = new(ContentHeaders.Select(x => x.ToLower()));
43+
44+
internal static bool IsContentHeader(string key) => ContentHeadersHash.Contains(key.ToLower());
45+
}

src/RestSharp/Request/HttpRequestMessageExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ namespace RestSharp;
2020

2121
static class HttpRequestMessageExtensions {
2222
public static void AddHeaders(this HttpRequestMessage message, RequestHeaders headers) {
23-
var headerParameters = headers.Parameters.Where(x => !RequestContent.ContentHeaders.Contains(x.Name));
23+
var headerParameters = headers.Parameters.Where(x => !KnownHeaders.IsContentHeader(x.Name!));
2424

2525
headerParameters.ForEach(x => AddHeader(x, message.Headers));
2626

@@ -31,4 +31,4 @@ void AddHeader(Parameter parameter, HttpHeaders httpHeaders) {
3131
httpHeaders.TryAddWithoutValidation(parameter.Name!, parameterStringValue);
3232
}
3333
}
34-
}
34+
}

src/RestSharp/Request/RequestContent.cs

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,7 @@ class RequestContent : IDisposable {
2626
readonly RestRequest _request;
2727
readonly List<Stream> _streams = new();
2828

29-
internal static readonly string[] ContentHeaders = {
30-
Allow.ToLower(),
31-
Expires.ToLower(),
32-
ContentDisposition.ToLower(),
33-
ContentEncoding.ToLower(),
34-
ContentLanguage.ToLower(),
35-
ContentLength.ToLower(),
36-
ContentLocation.ToLower(),
37-
ContentRange.ToLower(),
38-
ContentType.ToLower(),
39-
ContentMD5.ToLower(),
40-
LastModified.ToLower(),
41-
};
29+
4230

4331
HttpContent? Content { get; set; }
4432

@@ -172,15 +160,15 @@ void AddPostParameters(ParametersCollection? postParameters) {
172160
var formContent = new FormUrlEncodedContent(
173161
_request.Parameters
174162
.Where(x => x.Type == ParameterType.GetOrPost)
175-
.Select(x => new KeyValuePair<string, string>(x.Name!, x.Value!.ToString()!))!
163+
.Select(x => new KeyValuePair<string, string>(x.Name!, x.Value!.ToString()!))
176164
);
177165
Content = formContent;
178166
}
179167
}
180168

181169
void AddHeaders() {
182170
var contentHeaders = _request.Parameters
183-
.Where(x => x.Type == ParameterType.HttpHeader && ContentHeaders.Contains(x.Name?.ToLower()))
171+
.Where(x => x.Type == ParameterType.HttpHeader && IsContentHeader(x.Name!))
184172
.ToArray();
185173

186174
if (contentHeaders.Length > 0 && Content == null) {

src/RestSharp/Request/RequestHeaders.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
// limitations under the License.
1414
//
1515

16+
// ReSharper disable InvertIf
1617
namespace RestSharp;
1718

1819
class RequestHeaders {
Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,15 @@
1-
using System.Net;
2-
3-
namespace RestSharp.Tests;
1+
namespace RestSharp.Tests;
42

53
public class RestContentTests {
64
[Fact]
75
public void RestContent_CaseInsensitiveHeaders() {
8-
var myContentType = "application/x-custom";
9-
var request = new RestRequest("resource");
10-
request.AddHeader("coNteNt-TypE", myContentType);
11-
var client = new RestClient();
12-
var content = new RequestContent(client, request);
6+
const string myContentType = "application/x-custom";
7+
8+
var request = new RestRequest("resource").AddHeader("coNteNt-TypE", myContentType);
9+
var content = new RequestContent(new RestClient(), request);
1310

1411
var httpContent = content.BuildContent();
1512

16-
Assert.Equal(myContentType, httpContent.Headers.ContentType.MediaType);
13+
httpContent.Headers.ContentType!.MediaType.Should().Be(myContentType);
1714
}
1815
}

0 commit comments

Comments
 (0)