home *** CD-ROM | disk | FTP | other *** search
- #
- # /*
- # * *********** WARNING **************
- # * This file generated by My::WrapXS/2.03-dev
- # * Any changes made here will be lost
- # * ***********************************
- # * 1. D:/Perl/site/lib/ExtUtils/XSBuilder/WrapXS.pm:38
- # * 2. D:/Perl/site/lib/ExtUtils/XSBuilder/WrapXS.pm:2064
- # * 3. ../../build/xsbuilder.pl:202
- # * 4. Makefile.PL:19
- # */
- #
-
-
- package Apache::Cookie;
- require DynaLoader ;
- use strict ;
- use vars qw{$VERSION @ISA} ;
-
- push @ISA, 'DynaLoader' ;
- $VERSION = '2.03-dev';
- bootstrap Apache::Cookie $VERSION ;
-
- # XXX How do we test for the appropriate modperl version?
- # The modperl package isn't necessarily loaded, but Apache2
- # is. Perhaps Apache2 should always include a VERSION?
-
- if ($ENV{MOD_PERL}) {
- require mod_perl;
- if ($mod_perl::VERSION > 1.99) {
- die __PACKAGE__ . ": httpd must load mod_apreq.so first"
- if __PACKAGE__->env ne "Apache::RequestRec";
- }
- elsif ($mod_perl::VERSION > 1.24) {
- die __PACKAGE__ . ": httpd must load mod_apreq1.so first"
- if __PACKAGE__->env ne "Apache";
- }
- else {
- die "Unrecognized mod_perl version number: $modperl::VERSION";
- }
- }
-
- use strict;
- use warnings FATAL => 'all';
-
- use APR;
- use APR::Table;
-
- package Apache::Cookie::Jar;
- push our(@ISA), __PACKAGE__ -> env;
-
- package Apache::Cookie::Table;
- push our(@ISA), 'APR::Table';
-
- package Apache::Cookie;
-
- sub jar {
- my $self = shift;
- return Apache::Cookie::Jar->new(@_);
- }
-
- sub new {
- my ($class, $env, %attrs) = @_;
- my $name = delete $attrs{name};
- my $value = delete $attrs{value};
- $name = delete $attrs{-name} unless defined $name;
- $value = delete $attrs{-value} unless defined $value;
- return unless defined $name and defined $value;
-
- my $cookie = $class->make($env, $name, $class->freeze($value));
- $cookie->set_attr(%attrs);
- return $cookie;
- }
-
- sub fetch {
- my $self = shift;
- my $jar = $self->jar(@_);
- return wantarray ? %{scalar $jar->cookie} : $jar->cookie;
- }
-
- sub freeze {
- my ($class, $value) = @_;
- return encode($value) if not ref $value;
- return $value->freeze if UNIVERSAL::can($value,"freeze");
- if (UNIVERSAL::isa($value,"ARRAY")) {
- return join '&', map encode($_), @$value;
- }
- elsif (UNIVERSAL::isa($value,"HASH")) {
- return join '&', map encode($_), %$value;
- }
- else {
- die "Can't freeze '$value'";
- }
- }
-
- sub thaw {
- my $self = shift;
- my @rv = map decode($_), split /&/, $self->raw_value;
- return wantarray ? @rv : $rv[0];
- }
-
- sub value { shift->thaw }
-
-
- 1;
- __END__
-