home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2004 December / PCpro_2004_12.ISO / files / webserver / tsw / TSW_3.4.0.exe / Apache2 / perl / Cookie.pm < prev    next >
Encoding:
Perl POD Document  |  2004-02-15  |  2.6 KB  |  107 lines

  1. # /*
  2. #  * *********** WARNING **************
  3. #  * This file generated by My::WrapXS/2.03-dev
  4. #  * Any changes made here will be lost
  5. #  * ***********************************
  6. #  * 1. D:/Perl/site/lib/ExtUtils/XSBuilder/WrapXS.pm:38
  7. #  * 2. D:/Perl/site/lib/ExtUtils/XSBuilder/WrapXS.pm:2064
  8. #  * 3. ../../build/xsbuilder.pl:202
  9. #  * 4. Makefile.PL:19
  10. #  */
  11.  
  12.  
  13. package Apache::Cookie;
  14. require DynaLoader ;
  15. use strict ;
  16. use vars qw{$VERSION @ISA} ;
  17.  
  18. push @ISA, 'DynaLoader' ;
  19. $VERSION = '2.03-dev';
  20. bootstrap Apache::Cookie $VERSION ;
  21.  
  22. # XXX How do we test for the appropriate modperl version?
  23. # The modperl package isn't necessarily loaded, but Apache2
  24. # is.  Perhaps Apache2 should always include a VERSION?
  25.  
  26. if ($ENV{MOD_PERL}) {
  27.     require mod_perl;
  28.     if ($mod_perl::VERSION > 1.99) {
  29.         die __PACKAGE__ . ": httpd must load mod_apreq.so first"
  30.                if __PACKAGE__->env ne "Apache::RequestRec";
  31.     }
  32.     elsif ($mod_perl::VERSION > 1.24) {
  33.         die __PACKAGE__ . ": httpd must load mod_apreq1.so first"
  34.               if __PACKAGE__->env ne "Apache";
  35.     }
  36.     else {
  37.        die "Unrecognized mod_perl version number: $modperl::VERSION";
  38.     }
  39. }
  40.  
  41. use strict;
  42. use warnings FATAL => 'all';
  43.  
  44. use APR;
  45. use APR::Table;
  46.  
  47. package Apache::Cookie::Jar;
  48. push our(@ISA), __PACKAGE__ -> env;
  49.  
  50. package Apache::Cookie::Table;
  51. push our(@ISA), 'APR::Table';
  52.  
  53. package Apache::Cookie;
  54.  
  55. sub jar {
  56.     my $self = shift;
  57.     return Apache::Cookie::Jar->new(@_);
  58. }
  59.  
  60. sub new {
  61.     my ($class, $env, %attrs) = @_;
  62.     my $name  = delete $attrs{name};
  63.     my $value = delete $attrs{value};
  64.     $name     = delete $attrs{-name}  unless defined $name;
  65.     $value    = delete $attrs{-value} unless defined $value;
  66.     return unless defined $name and defined $value;
  67.  
  68.     my $cookie = $class->make($env, $name, $class->freeze($value));
  69.     $cookie->set_attr(%attrs);
  70.     return $cookie;
  71. }
  72.  
  73. sub fetch {
  74.     my $self = shift;
  75.     my $jar = $self->jar(@_);
  76.     return wantarray ? %{scalar $jar->cookie} : $jar->cookie;
  77. }
  78.  
  79. sub freeze {
  80.     my ($class, $value) = @_;
  81.     return encode($value) if not ref $value;
  82.     return $value->freeze if UNIVERSAL::can($value,"freeze");
  83.     if (UNIVERSAL::isa($value,"ARRAY")) {
  84.         return join '&', map encode($_), @$value;
  85.     }
  86.     elsif (UNIVERSAL::isa($value,"HASH")) {
  87.         return join '&', map encode($_), %$value;
  88.     }
  89.     else {
  90.         die "Can't freeze '$value'";
  91.     }
  92. }
  93.  
  94. sub thaw {
  95.     my $self = shift;
  96.     my @rv = map decode($_), split /&/, $self->raw_value;
  97.     return wantarray ? @rv : $rv[0];
  98. }
  99.  
  100. sub value { shift->thaw }
  101.  
  102.  
  103. 1;
  104. __END__
  105.