Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit ccb1876

Browse files
committed
Update HttpUtils.HttpClient.cs
1 parent e89af4c commit ccb1876

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

src/ServiceStack.Text/HttpUtils.HttpClient.cs

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,9 +1012,28 @@ public static void AddHeader(this HttpRequestMessage res, string name, string va
10121012

10131013
public static string? GetHeader(this HttpRequestMessage res, string name) =>
10141014
res.Headers.TryGetValues(name, out var values) ? values.FirstOrDefault() : null;
1015-
1016-
public static string? GetHeader(this HttpResponseMessage res, string name) =>
1017-
res.Headers.TryGetValues(name, out var values) ? values.FirstOrDefault() : null;
1015+
1016+
public static Dictionary<string, Func<HttpResponseMessage, string?>> HeadersResolver { get; set; } = new(StringComparer.OrdinalIgnoreCase)
1017+
{
1018+
[HttpHeaders.ContentType] = res => res.Content.Headers.ContentType?.MediaType,
1019+
[HttpHeaders.Expires] = res => res.Content.Headers.Expires?.ToString(),
1020+
[HttpHeaders.ContentDisposition] = res => res.Content.Headers.ContentDisposition?.ToString(),
1021+
[HttpHeaders.ContentEncoding] = res => res.Content.Headers.ContentEncoding?.ToString(),
1022+
[HttpHeaders.ContentLength] = res => res.Content.Headers.ContentLength?.ToString(),
1023+
[HttpHeaders.ETag] = res => res.Headers.ETag?.Tag.ToString(),
1024+
[HttpHeaders.Vary] = res => string.Join(',', res.Headers.Vary),
1025+
[HttpHeaders.CacheControl] = res => res.Headers.CacheControl?.ToString(),
1026+
};
1027+
1028+
public static string? GetHeader(this HttpResponseMessage res, string name)
1029+
{
1030+
if (HeadersResolver.TryGetValue(name, out var fn))
1031+
return fn(res);
1032+
1033+
return res.Headers.TryGetValues(name, out var values)
1034+
? values.FirstOrDefault()
1035+
: null;
1036+
}
10181037

10191038
public static HttpRequestMessage WithHeader(this HttpRequestMessage httpReq, string name, string value)
10201039
{

0 commit comments

Comments
 (0)