You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apreq-cvs@httpd.apache.org by jo...@apache.org on 2003/06/07 17:11:42 UTC
cvs commit: httpd-apreq-2/glue/perl/xsbuilder/Apache/Cookie Cookie_pm
joes 2003/06/07 08:11:42
Added: glue/perl/xsbuilder/Apache/Cookie Cookie_pm
Log:
Add Cookie_pm.
Revision Changes Path
1.1 httpd-apreq-2/glue/perl/xsbuilder/Apache/Cookie/Cookie_pm
Index: Cookie_pm
===================================================================
use strict;
use warnings FATAL => 'all';
package Apache::Cookie::Jar;
use base 'APR::Table';
sub value_class { 'Apache::Cookie' }
package Apache::Cookie;
push our(@ISA), __PACKAGE__ -> env;
use overload '"' => sub {${$_[0]}};
sub status { ${$_[0]} + 0 }
sub new {
my ($class, $env, %attrs) = @_;
my $name = delete $attrs{name} || delete $attrs{-name};
my $value = delete $attrs{value} || delete $attrs{-value};
return unless defined $name and defined $value;
my $cookie = $class->make($env, $class->freeze($name, $value));
$cookie->set_attr(%args);
return $cookie;
}
sub fetch {
my $self = shift;
my $jar = $self->jar(@_);
return wantarray ? map +($_->name, $_), $jar->get() : $jar;
}
sub freeze {
my ($class, $name, $value) = @_;
return ($name, url_encode($value)) if not ref $value;
return ($name, $value->freeze) if $value->can("freeze");
if ($value->isa("ARRAY")) {
return $name, join '&', map url_encode($_), @$value;
}
elsif ($value->isa("HASH")) {
return $name, join '&', map url_encode($_), %$value;
}
else {
die "Can't freeze '$value'";
}
}
sub thaw {
my $self = shift;
return $self->name, map url_decode($_), split /&/, $self;
}