Skip to content

Commit bb8c95f

Browse files
committed
Merge branch 'case-insensitive-header-names' of https://github.com/amosonn/RestSharp into amosonn-case-insensitive-header-names
2 parents 1803402 + 4910473 commit bb8c95f

File tree

2 files changed

+31
-5
lines changed

2 files changed

+31
-5
lines changed

src/RestSharp/Request/RequestContent.cs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,17 @@ class RequestContent : IDisposable {
2727
readonly List<Stream> _streams = new();
2828

2929
internal static readonly string[] ContentHeaders = {
30-
Allow, Expires,
31-
ContentDisposition, ContentEncoding, ContentLanguage, ContentLength, ContentLocation, ContentRange, ContentType, ContentMD5,
32-
LastModified
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(),
3341
};
3442

3543
HttpContent? Content { get; set; }
@@ -172,7 +180,7 @@ void AddPostParameters(ParametersCollection? postParameters) {
172180

173181
void AddHeaders() {
174182
var contentHeaders = _request.Parameters
175-
.Where(x => x.Type == ParameterType.HttpHeader && ContentHeaders.Contains(x.Name))
183+
.Where(x => x.Type == ParameterType.HttpHeader && ContentHeaders.Contains(x.Name?.ToLower()))
176184
.ToArray();
177185

178186
if (contentHeaders.Length > 0 && Content == null) {
@@ -208,4 +216,4 @@ public void Dispose() {
208216
_streams.ForEach(x => x.Dispose());
209217
Content?.Dispose();
210218
}
211-
}
219+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using System.Net;
2+
3+
namespace RestSharp.Tests;
4+
5+
public class RestContentTests {
6+
[Fact]
7+
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);
13+
14+
var httpContent = content.BuildContent();
15+
16+
Assert.Equal(myContentType, httpContent.Headers.ContentType.MediaType);
17+
}
18+
}

0 commit comments

Comments
 (0)