[Jifty-commit] jifty branch, plack, updated. 9cd8cb7312ad90438a751945950c66c88d758ab0

Jifty commits jifty-commit at lists.jifty.org
Fri Jan 29 23:51:30 EST 2010


The branch, plack has been updated
       via  9cd8cb7312ad90438a751945950c66c88d758ab0 (commit)
      from  872a240aac9ae9af9614cb3f3a8df17cd2d9dbf7 (commit)

Summary of changes:
 lib/Jifty/Request.pm     |   25 ++++++++++++-------------
 lib/Jifty/Web/Session.pm |    4 ++--
 t/Jifty.pm               |    2 +-
 3 files changed, 15 insertions(+), 16 deletions(-)

- Log -----------------------------------------------------------------
commit 9cd8cb7312ad90438a751945950c66c88d758ab0
Author: Chia-liang Kao <clkao at clkao.org>
Date:   Sat Jan 30 12:40:06 2010 +0800

    Use proper constructor in Jifty::Request->promote and avoid accessing cookies from env.

diff --git a/lib/Jifty/Request.pm b/lib/Jifty/Request.pm
index 8ba87c6..2bd9710 100644
--- a/lib/Jifty/Request.pm
+++ b/lib/Jifty/Request.pm
@@ -20,6 +20,7 @@ has 'parameters' => (is => 'rw', isa => 'HashRef', default => sub { {} });
 has 'uploads' => (is => 'rw', isa => 'HashRef');
 has 'headers' => (is => 'rw', isa => 'HTTP::Headers', default => sub { HTTP::Headers->new });
 has 'uri' => (is => 'rw', isa => 'URI', default => sub { URI->new('http:///') });
+has 'cookies' => (is => 'rw', isa => 'HashRef', default => sub { {} } );
 
 sub address     { $_[0]->env->{REMOTE_ADDR} }
 sub remote_host { $_[0]->env->{REMOTE_HOST} }
@@ -161,19 +162,17 @@ sub promote {
     die Carp::longmess("old calling style") unless ref $req;
 
     # Import all props from Plack::Request object
-    my $self = bless {}, $class;
-    $self->{'actions'} = {};
-    $self->{'state_variables'} = {};
-    $self->{'fragments'} = {};
-    $self->arguments({});
-    $self->template_arguments({});
-
-    $req->cookies; # vivify plack.cookie.parsed
-    $self->{env} = $req->env;
-    $self->uri($req->uri);
-    $self->headers($req->headers);
-    $self->parameters($req->parameters->mixed);
-    $self->uploads($req->uploads->mixed);
+    my $self = $class->new( env => $req->env,
+                            headers => $req->headers,
+                            parameters => $req->parameters->mixed,
+                            uploads => $req->uploads->mixed,
+                            uri => $req->uri,
+                            cookies => $req->cookies,
+                            actions => {},
+                            state_variables => {},
+                            fragments => {},
+                            arguments => {},
+                            template_arguments => {} );
 
     # Grab content type and posted data, if any
     my $ct   = $req->content_type;
diff --git a/lib/Jifty/Web/Session.pm b/lib/Jifty/Web/Session.pm
index 23171f5..fb0106b 100644
--- a/lib/Jifty/Web/Session.pm
+++ b/lib/Jifty/Web/Session.pm
@@ -111,7 +111,7 @@ sub load_by_kv {
 sub _get_session_id_from_client {
     my $self        = shift;
     my $cookies     = Jifty->web->request
-        ? Jifty->web->request->env->{'plack.cookie.parsed'} : {};
+        ? Jifty->web->request->cookies : {};
     return $cookies->{$self->cookie_name};
 }
 
@@ -318,7 +318,7 @@ sub set_cookie {
     $self->load unless $self->loaded;
 
     my $cookie_name = $self->cookie_name;
-    my $cookies     = Jifty->web->request ? Jifty->web->request->env->{'plack.cookie.parsed'} : {};
+    my $cookies     = Jifty->web->request ? Jifty->web->request->cookies : {};
     my $cookie      = {
         value   => $self->id,
         expires => $self->expires,
diff --git a/t/Jifty.pm b/t/Jifty.pm
index 78c9828..16542d9 100644
--- a/t/Jifty.pm
+++ b/t/Jifty.pm
@@ -16,7 +16,7 @@ use Test::Base::Filter -Base;
 sub request_from_webform {
     my $form = shift;
     my $r = Jifty::Request->new->from_webform(%$form);
-    delete $r->{$_} for qw(env headers parameters);
+    delete $r->{$_} for qw(env headers parameters cookies);
     return $r;
 }
 

-----------------------------------------------------------------------


More information about the Jifty-commit mailing list