@@ -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