Skip to content

Commit

Permalink
fixed support for Netscape cookies in Mojo::Cookie::Response (closes #…
Browse files Browse the repository at this point in the history
  • Loading branch information
kraih committed Aug 18, 2013
1 parent 757f066 commit 70d28ee
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 1 deletion.
1 change: 1 addition & 0 deletions Changes
@@ -1,5 +1,6 @@

4.26 2013-08-18
- Fixed support for Netscape cookies in Mojo::Cookie::Response.

4.25 2013-08-17
- Added support for calling element methods to Mojo::Collection.
Expand Down
3 changes: 2 additions & 1 deletion lib/Mojo/Cookie/Response.pm
Expand Up @@ -31,7 +31,8 @@ sub parse {
# "expires" is a special case, thank you Netscape...
if ($name =~ /^expires$/i) {
push @$pairs, @{shift @$tree // []};
$value .= join ' ', ',', grep {defined} splice @$pairs, 0, 10;
my $len = $pairs->[0] && $pairs->[0] =~ /-/ ? 6 : 10;
$value .= join ' ', ',', grep {defined} splice @$pairs, 0, $len;
}

# This will only run once
Expand Down
24 changes: 24 additions & 0 deletions t/mojo/cookie.t
Expand Up @@ -167,6 +167,30 @@ is $cookie->to_string,
# Empty response cookie
is_deeply(Mojo::Cookie::Response->parse, [], 'no cookies');

# Parse response cookie (Netscape)
$cookies = Mojo::Cookie::Response->parse(
'CUSTOMER=WILE_E_COYOTE; path=/; expires=Tuesday, 09-Nov-1999 23:12:40 GMT');
is $cookies->[0]->name, 'CUSTOMER', 'right name';
is $cookies->[0]->value, 'WILE_E_COYOTE', 'right value';
is $cookies->[0]->expires, 'Tue, 09 Nov 1999 23:12:40 GMT',
'right expires value';
is $cookies->[1], undef, 'no more cookies';

# Parse multiple response cookies (Netscape)
$cookies
= Mojo::Cookie::Response->parse(
'CUSTOMER=WILE_E_COYOTE; expires=Tuesday, 09-Nov-1999 23:12:40 GMT; path=/'
. ',SHIPPING=FEDEX; path=/; expires=Tuesday, 09-Nov-1999 23:12:41 GMT');
is $cookies->[0]->name, 'CUSTOMER', 'right name';
is $cookies->[0]->value, 'WILE_E_COYOTE', 'right value';
is $cookies->[0]->expires, 'Tue, 09 Nov 1999 23:12:40 GMT',
'right expires value';
is $cookies->[1]->name, 'SHIPPING', 'right name';
is $cookies->[1]->value, 'FEDEX', 'right value';
is $cookies->[1]->expires, 'Tue, 09 Nov 1999 23:12:41 GMT',
'right expires value';
is $cookies->[2], undef, 'no more cookies';

# Parse response cookie (RFC 6265)
$cookies
= Mojo::Cookie::Response->parse(
Expand Down

0 comments on commit 70d28ee

Please sign in to comment.