X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst%2FRequest.pm;h=afaa4144aeabecc004118c3006b4a706f8b61bb0;hp=c859fd27af793fcc6f03570d942f14bfdefe55f1;hb=536bee890cf24e0e4bcda7562e7b70cc03ca0620;hpb=6802c88402308691517169bc6bd79375decb9537 diff --git a/lib/Catalyst/Request.pm b/lib/Catalyst/Request.pm index c859fd2..afaa414 100644 --- a/lib/Catalyst/Request.pm +++ b/lib/Catalyst/Request.pm @@ -26,7 +26,7 @@ has query_parameters => (is => 'rw', default => sub { {} }); has secure => (is => 'rw', default => 0); has captures => (is => 'rw', default => sub { [] }); has uri => (is => 'rw', predicate => 'has_uri'); -has user => (is => 'rw'); +has remote_user => (is => 'rw'); has headers => ( is => 'rw', isa => 'HTTP::Headers', @@ -36,14 +36,6 @@ has headers => ( lazy => 1, ); -# Moose TODO: -# - Can we lose the before modifiers which just call prepare_body ? -# they are wasteful, slow us down and feel cluttery. -# Can we call prepare_body at BUILD time? -# Can we make _body an attribute, have the rest of -# these lazy build from there and kill all the direct hash access -# in Catalyst.pm and Engine.pm? - has _context => ( is => 'rw', weak_ref => 1, @@ -58,11 +50,6 @@ has body_parameters => ( default => sub { {} }, ); -before body_parameters => sub { - my ($self) = @_; - $self->_context->prepare_body(); -}; - has uploads => ( is => 'rw', required => 1, @@ -76,15 +63,33 @@ has parameters => ( default => sub { {} }, ); -before parameters => sub { - my ($self, $params) = @_; - if ( $params && !ref $params ) { - $self->_context->log->warn( - "Attempt to retrieve '$params' with req->params(), " . - "you probably meant to call req->param('$params')" ); - $params = undef; - } +# TODO: +# - Can we lose the before modifiers which just call prepare_body ? +# they are wasteful, slow us down and feel cluttery. +# Can we make _body an attribute, have the rest of +# these lazy build from there and kill all the direct hash access +# in Catalyst.pm and Engine.pm? + +before $_ => sub { + my ($self) = @_; + my $context = $self->_context || return; + $context->prepare_body; +} for qw/parameters body_parameters/; + +around parameters => sub { + my ($orig, $self, $params) = @_; + if ($params) { + if ( !ref $params ) { + $self->_context->log->warn( + "Attempt to retrieve '$params' with req->params(), " . + "you probably meant to call req->param('$params')" + ); + $params = undef; + } + return $self->$orig($params); + } + $self->$orig(); }; has base => ( @@ -121,6 +126,10 @@ has hostname => ( has _path => ( is => 'rw', predicate => '_has_path', clearer => '_clear_path' ); +# XXX: Deprecated in docs ages ago (2006), deprecated with warning in 5.8000 due +# to confusion between Engines and Plugin::Authentication. Remove in 5.8100? +has user => (is => 'rw'); + sub args { shift->arguments(@_) } sub body_params { shift->body_parameters(@_) } sub input { shift->body(@_) } @@ -210,8 +219,7 @@ For example, if your action was and the URI for the request was C, the string C would be the first and only argument. -Arguments just get passed through and B get unescaped automatically, so -you should do that explicitly. +Arguments get automatically URI-unescaped for you. =head2 $req->args @@ -219,7 +227,10 @@ Shortcut for arguments. =head2 $req->base -Contains the URI base. This will always have a trailing slash. +Contains the URI base. This will always have a trailing slash. Note that the +URI scheme (eg., http vs. https) must be determined through heuristics; +depending on your server configuration, it may be incorrect. See $req->secure +for more info. If your application was queried with the URI C then C is C. @@ -455,7 +466,12 @@ Shortcut for $req->headers->referer. Returns the referring page. =head2 $req->secure -Returns true or false, indicating whether the connection is secure (https). +Returns true or false, indicating whether the connection is secure +(https). Note that the URI scheme (eg., http vs. https) must be determined +through heuristics, and therefore the reliablity of $req->secure will depend +on your server configuration. If you are serving secure pages on the standard +SSL port (443) and/or setting the HTTPS environment variable, $req->secure +should be valid. =head2 $req->captures @@ -574,8 +590,12 @@ sub uri_with { =head2 $req->user -Returns the currently logged in user. Deprecated. The method recommended for -newer plugins is $c->user. +Returns the currently logged in user. B, do not call, +this will be removed in version 5.81. + +=head2 $req->remote_user + +Returns the value of the C environment variable. =head2 $req->user_agent @@ -592,7 +612,7 @@ Catalyst Contributors, see Catalyst.pm =head1 COPYRIGHT -This program is free software, you can redistribute it and/or modify +This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut