| OpenFrame documentation | Contained in the OpenFrame distribution. |
OpenFrame::Cookies - An abstract cookie class
use OpenFrame;
my $cookies = OpenFrame::Cookies->new();
$cookies->set("animal" => "parrot");
my $colour = $cookies->get("colour")->value;
$cookies->delete("colour");
my %cookies = $cookies->get_all();
OpenFrame::Cookies represents cookies inside OpenFrame. Cookies in
OpenFrame represent some kind of storage option on the requesting
side.
Cookies are a general mechanism which server side connections can use
to both store and retrieve information on the client side of the
connection. The addition of a simple, persistent, client-side state
significantly extends the capabilities of Web-based client/server
applications. OpenFrame::Cookies is an abstract cookie class
for OpenFrame which can represent cookies no matter how they really
come to exist outside OpenFrame (such as CGI or Apache cookie
objects).
The new() method creates a new OpenFrame::Cookies
object. These can hold multiple cookies (although they must have
unique names) inside the cookie tin.
my $cookies = OpenFrame::Cookies->new();
The set() method adds an entry:
$cookies->set("animal" => "parrot");
The get() method returns a cookie (a OpenFrame::Cookie object)
given its name:
my $colour = $cookies->get("colour")->value;
The delete() method removes a cookie element given its name:
$cookies->delete("colour");
The get_all() method returns a hash of all the cookies:
my %cookies = $cookies->get_all();
James Duncan <jduncan@fotango.com>, Leon Brocard <leon@fotango.com>
| OpenFrame documentation | Contained in the OpenFrame distribution. |
package OpenFrame::Cookies; use strict; use warnings::register; our $VERSION=3.05; use OpenFrame::Cookie; use OpenFrame::Object; use base qw ( OpenFrame::Object ); sub init { my $self = shift; $self->cookies( {} ); } sub cookies { my $self = shift; my $val = shift; if (defined( $val )) { $self->{cookies} = $val; return $self; } else { return $self->{cookies}; } } sub set { my $self = shift; my $key = shift; my $val = shift; if (defined($key) && !defined($val)) { ## chances are we have a Cookie object if ($key->isa('OpenFrame::Cookie')) { ## get the name out of the cookie, and we store it $self->cookies->{ $key->name } = $key; } else { $self->error("object $key is not an OpenFrame::Cookie"); return undef; } } elsif (defined($key) && defined($val)) { ## right, we have a key value pair that we need to turn ## into an OpenFrame::Cookie object my $cookie = OpenFrame::Cookie->new(); $cookie->name( $key ); $cookie->value( [ $val ] ); ## call this method again with the cookie as the parameter $self->set( $cookie ); } else { $self->error("usage: ->set( <COOKIE || KEY, VALUE> )"); } } sub get { my $self = shift; my $key = shift; if (defined( $key )) { return $self->cookies->{ $key }; } else { $self->error("no key specified"); } } sub delete { my $self = shift; my $key = shift; if (defined( $key )) { delete $self->{ cookies }->{ $key }; } else { $self->error("no key specified"); } } sub get_all { my $self = shift; return %{$self->cookies}; } 1; __END__