@@ -35,67 +35,64 @@ internal static IEnumerable<Cookie> ParseSetCookieHeader( string setCookieHeader
3535
3636 foreach ( var parsedCookie in header . ParsedCookies ) {
3737 var cookie = new Cookie {
38+ Name = parsedCookie . CookiePair . Name ,
39+ Value = parsedCookie . CookiePair . Value ,
3840 Path = "/" ,
3941 Domain = hostName
4042 } ;
4143
4244 var hasMaxAge = false ;
4345
44- if ( parsedCookie . CookieNameValuePairs . Any ( ) ) {
45- cookie . Name = parsedCookie . CookieNameValuePairs . ElementAt ( 0 ) . Name ;
46- cookie . Value = parsedCookie . CookieNameValuePairs . ElementAt ( 0 ) . Value ;
47-
48- foreach ( var nameValuePair in parsedCookie . CookieNameValuePairs . Skip ( 1 ) ) {
49- if ( string . Equals ( nameValuePair . Name , "httponly" , StringComparison . OrdinalIgnoreCase ) ) {
50- cookie . HttpOnly = true ;
46+ foreach ( var nameValuePair in parsedCookie . AttributePairs ) {
47+ if ( string . Equals ( nameValuePair . Name , "httponly" , StringComparison . OrdinalIgnoreCase ) ) {
48+ cookie . HttpOnly = true ;
49+ }
50+ else if ( string . Equals ( nameValuePair . Name , "secure" , StringComparison . OrdinalIgnoreCase ) ) {
51+ cookie . Secure = true ;
52+ }
53+ else if ( string . Equals ( nameValuePair . Name , "path" , StringComparison . OrdinalIgnoreCase ) ) {
54+ if ( nameValuePair . Value != string . Empty ) {
55+ cookie . Path = nameValuePair . Value ;
5156 }
52- else if ( string . Equals ( nameValuePair . Name , "secure" , StringComparison . OrdinalIgnoreCase ) ) {
53- cookie . Secure = true ;
57+ else {
58+ cookie . Path = "/" ;
5459 }
55- else if ( string . Equals ( nameValuePair . Name , "path" , StringComparison . OrdinalIgnoreCase ) ) {
56- if ( nameValuePair . Value != string . Empty ) {
57- cookie . Path = nameValuePair . Value ;
58- }
59- else {
60- cookie . Path = "/" ;
61- }
60+ }
61+ else if ( string . Equals ( nameValuePair . Name , "domain" , StringComparison . OrdinalIgnoreCase ) ) {
62+ if ( nameValuePair . Value != string . Empty ) {
63+ cookie . Domain = nameValuePair . Value ;
6264 }
63- else if ( string . Equals ( nameValuePair . Name , "domain" , StringComparison . OrdinalIgnoreCase ) ) {
64- if ( nameValuePair . Value != string . Empty ) {
65- cookie . Domain = nameValuePair . Value ;
66- }
67- else {
68- cookie . Domain = hostName ;
69- }
65+ else {
66+ cookie . Domain = hostName ;
7067 }
71- else if ( string . Equals ( nameValuePair . Name , "max-age" , StringComparison . OrdinalIgnoreCase ) ) {
72- var maxAge = int . Parse ( nameValuePair . Value ) ;
73- cookie . Expires = DateTime . Now . AddSeconds ( maxAge ) ;
68+ }
69+ else if ( string . Equals ( nameValuePair . Name , "max-age" , StringComparison . OrdinalIgnoreCase ) ) {
70+ var maxAge = int . Parse ( nameValuePair . Value ) ;
71+ cookie . Expires = DateTime . Now . AddSeconds ( maxAge ) ;
7472
75- // Prevent the 'expires' value from overriding the value that was determined using max-age
76- hasMaxAge = true ;
77- }
78- else if ( ! hasMaxAge && string . Equals ( nameValuePair . Name , "expires" , StringComparison . OrdinalIgnoreCase ) ) {
79- // max-age takes precedence over "expires"
80- DateTime parsedDate ;
73+ // Prevent the 'expires' value from overriding the value that was determined using max-age
74+ hasMaxAge = true ;
75+ }
76+ else if ( ! hasMaxAge && string . Equals ( nameValuePair . Name , "expires" , StringComparison . OrdinalIgnoreCase ) ) {
77+ // max-age takes precedence over "expires"
78+ DateTime parsedDate ;
8179
82- if ( TryParseHttpDate ( nameValuePair . Value , out parsedDate ) ) {
83- cookie . Expires = parsedDate . ToLocalTime ( ) ;
84- }
80+ if ( TryParseHttpDate ( nameValuePair . Value , out parsedDate ) ) {
81+ cookie . Expires = parsedDate . ToLocalTime ( ) ;
8582 }
86- else if ( string . Equals ( nameValuePair . Name , "version" , StringComparison . OrdinalIgnoreCase ) ) {
87- if ( nameValuePair . Value != string . Empty ) {
88- int version ;
83+ }
84+ else if ( string . Equals ( nameValuePair . Name , "version" , StringComparison . OrdinalIgnoreCase ) ) {
85+ if ( nameValuePair . Value != string . Empty ) {
86+ int version ;
8987
90- if ( int . TryParse ( nameValuePair . Value , out version ) ) {
91- cookie . Version = version ;
92- }
88+ if ( int . TryParse ( nameValuePair . Value , out version ) ) {
89+ cookie . Version = version ;
9390 }
9491 }
9592 }
96-
97- cookies . Add ( cookie ) ;
9893 }
94+
95+ cookies . Add ( cookie ) ;
9996 }
10097
10198 return cookies ;
0 commit comments