X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FRequest.pm;h=a8b98699d1093adf2ac0832b8521e0ad6064a26b;hb=d62d8073ed0e52016b17860180e3ed23fb4732a0;hp=27bda1367e30ca21b05235ef3ddf8909753f358d;hpb=a268a0112398ac10d8fabd86ed28a183cbe4398e;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Request.pm b/lib/Catalyst/Request.pm index 27bda13..a8b9869 100644 --- a/lib/Catalyst/Request.pm +++ b/lib/Catalyst/Request.pm @@ -38,7 +38,9 @@ Catalyst::Request - Catalyst Request Class $req->content_encoding; $req->content_length; $req->content_type; + $req->cookie; $req->cookies; + $req->full_uri; $req->header; $req->headers; $req->hostname; @@ -117,12 +119,65 @@ Shortcut to $req->headers->content_length Shortcut to $req->headers->content_type +=item $req->cookie + +A convenient method to $req->cookies. + + $cookie = $c->request->cookie('name'); + @cookies = $c->request->cookie; + +=cut + +sub cookie { + my $self = shift; + + if ( @_ == 0 ) { + return keys %{ $self->cookies }; + } + + if ( @_ == 1 ) { + + my $name = shift; + + unless ( exists $self->cookies->{$name} ) { + return undef; + } + + return $self->cookies->{$name}; + } +} + =item $req->cookies Returns a reference to a hash containing the cookies. print $c->request->cookies->{mycookie}->value; +=item $req->full_uri + +Returns the complete URI, with the parameter query string. + +=cut + +sub full_uri { + my $self = shift; + my $full_uri = $self->uri; + + if ( scalar $self->param ) { + my @params; + foreach my $arg ( sort keys %{ $self->params } ) { + if ( ref $self->params->{$arg} ) { + my $list = $self->params->{$arg}; + push @params, map { "$arg=" . $_ } sort @{$list}; + } else { + push @params, "$arg=" . $self->params->{$arg}; + } + } + $full_uri .= '?' . join( '&', @params ); + } + return $full_uri; +} + =item $req->header Shortcut to $req->headers->header @@ -161,8 +216,8 @@ Shortcut for $req->body. =item $req->match -This contains be the matching part of a regexp action. otherwise it -returns the same as 'action'. +This contains the matching part of a regexp action. Otherwise +it returns the same as 'action'. print $c->request->match; @@ -174,7 +229,8 @@ Contains the request method (C, C, C, etc). =item $req->param -Get request parameters with a CGI.pm like param method. +Get request parameters with a CGI.pm-compatible param method. This +is a method for accessing parameters in $c->req->parameters. $value = $c->request->param('foo'); @values = $c->request->param('foo'); @@ -235,7 +291,7 @@ Shortcut for $req->parameters. =item $req->parameters Returns a reference to a hash containing parameters. Values can -be either a scalar or a arrayref containing scalars. +be either a scalar or an arrayref containing scalars. print $c->request->parameters->{field}; print $c->request->parameters->{field}->[0];