@@ -1012,9 +1012,28 @@ public static void AddHeader(this HttpRequestMessage res, string name, string va
1012
1012
1013
1013
public static string ? GetHeader ( this HttpRequestMessage res , string name ) =>
1014
1014
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
+ }
1018
1037
1019
1038
public static HttpRequestMessage WithHeader ( this HttpRequestMessage httpReq , string name , string value )
1020
1039
{
0 commit comments