[Jifty-commit] jifty branch, plack, updated. 0b88a469f8f8e5b7fd1576d2521379753697c32b
Jifty commits
jifty-commit at lists.jifty.org
Fri Jan 29 08:48:12 EST 2010
The branch, plack has been updated
via 0b88a469f8f8e5b7fd1576d2521379753697c32b (commit)
via f690630d55d500c6fe8ec6c1dcd208c2cfc0db46 (commit)
via 9d96260ce0ddc0f3e5a155165e615ee44a663998 (commit)
via 5b354d43103646ae0def7afbfd7240ec5cd370cf (commit)
via 404fc085274fdb2d3323913f52ba8727d51a6587 (commit)
from 8391ce2924392470d9a708ed47ca6826ed47fb8d (commit)
Summary of changes:
Makefile.PL | 4 ++--
lib/Jifty/Handler.pm | 1 +
lib/Jifty/Request.pm | 42 +++++++++++++++++++++++++++++++++---------
lib/Jifty/Web/Session.pm | 30 +++++++++++-------------------
t/Jifty.pm | 1 +
5 files changed, 48 insertions(+), 30 deletions(-)
- Log -----------------------------------------------------------------
commit 404fc085274fdb2d3323913f52ba8727d51a6587
Author: Tatsuhiko Miyagawa <miyagawa at bulknews.net>
Date: Fri Jan 29 02:04:29 2010 -0800
make Jifty::Request not inherit from Plack::Request and instead copies
some data in promote(). Duplicate some code but they're mostly
accessors.
Updated the code work with new Plack::Request that is going to be
included in Plack core 1.0. Some tests are stil failing.
diff --git a/Makefile.PL b/Makefile.PL
index 868efbc..a261c5e 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -51,6 +51,7 @@ requires('HTTP::Date');
requires('HTTP::Server::Simple' => '0.35'); # HTTP::Server::Simple::CGI
requires('HTTP::Server::Simple::Recorder');
requires('Hash::Merge');
+requires('Hash::MultiValue', 0.05);
requires('Hook::LexWrap');
requires('IPC::PubSub' => '0.23' );
requires('IPC::Run3');
@@ -68,7 +69,7 @@ requires('Module::Refresh');
requires('Module::ScanDeps');
requires('Object::Declare' => '0.13');
requires('Params::Validate');
-requires('Plack' => '0.9032'); # Plack::Loader Plack::Test Plack::Util
+requires('Plack' => '0.99_01'); # Plack::Loader Plack::Test Plack::Util
requires('Plack::Request');
requires('Scalar::Defer' => '0.12');
requires('Shell::Command');
diff --git a/lib/Jifty/Request.pm b/lib/Jifty/Request.pm
index 9b1223f..30be3ec 100644
--- a/lib/Jifty/Request.pm
+++ b/lib/Jifty/Request.pm
@@ -4,7 +4,7 @@ use strict;
package Jifty::Request;
use Any::Moose;
-extends 'Plack::Request', 'Jifty::Object';
+extends 'Jifty::Object';
has 'env' => (is => "ro", isa => "HashRef", default => sub { {} });
has '_top_request' => (is => 'rw');
@@ -16,12 +16,29 @@ has 'future_continuation_id' => (is => 'rw');
has 'continuation_type' => (is => 'rw');
has 'continuation_path' => (is => 'rw');
-around 'method' => sub {
- my ($orig, $self, $arg) = @_;
- $self->{env}{REQUEST_METHOD} = $arg
- if $arg;
- $orig->($self, $arg ? $arg : ());
-};
+has 'parameters' => (is => 'rw', isa => 'HashRef');
+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:///') });
+
+sub address { $_[0]->env->{REMOTE_ADDR} }
+sub remote_host { $_[0]->env->{REMOTE_HOST} }
+sub protocol { $_[0]->env->{SERVER_PROTOCOL} }
+sub method { $_[0]->env->{REQUEST_METHOD} = $_[1] if @_ > 1; $_[0]->env->{REQUEST_METHOD} }
+sub port { $_[0]->env->{SERVER_PORT} }
+sub user { $_[0]->env->{REMOTE_USER} }
+sub request_uri { $_[0]->env->{REQUEST_URI} }
+sub path_info { $_[0]->env->{PATH_INFO} }
+sub script_name { $_[0]->env->{SCRIPT_NAME} }
+sub scheme { $_[0]->env->{'psgi.url_scheme'} }
+sub secure { $_[0]->scheme eq 'https' }
+sub body { $_[0]->env->{'psgi.input'} }
+sub input { $_[0]->env->{'psgi.input'} }
+
+sub header { shift->headers->header(@_) }
+sub path { shift->uri->path(@_) }
+sub content_length { shift->headers->content_length(@_) }
+sub content_type { shift->headers->content_type(@_) }
use Jifty::JSON;
use Jifty::YAML;
@@ -144,16 +161,22 @@ sub promote {
die Carp::longmess("old calling style") unless ref $req;
# Import all props from Plack::Request object
- my $self = bless $req, $class;
+ my $self = bless {}, $class;
$self->{'actions'} = {};
$self->{'state_variables'} = {};
$self->{'fragments'} = {};
$self->arguments({});
$self->template_arguments({});
+ $self->{env} = $req->env;
+ $self->uri($req->uri);
+ $self->headers($req->headers);
+ $self->parameters($req->parameters->mixed);
+ $self->uploads($req->uploads->mixed);
+
# Grab content type and posted data, if any
my $ct = $req->content_type;
- my $data = $req->raw_body;
+ my $data = $req->content;
# Check it for something appropriate
if ($data) {
commit 5b354d43103646ae0def7afbfd7240ec5cd370cf
Author: Tatsuhiko Miyagawa <miyagawa at bulknews.net>
Date: Fri Jan 29 02:08:16 2010 -0800
use Plack::Request in Handler
diff --git a/lib/Jifty/Handler.pm b/lib/Jifty/Handler.pm
index 725dff5..7ef8bb3 100644
--- a/lib/Jifty/Handler.pm
+++ b/lib/Jifty/Handler.pm
@@ -27,6 +27,7 @@ use base qw/Class::Accessor::Fast Jifty::Object/;
use Jifty::View::Declare::Handler ();
use Class::Trigger;
use String::BufferStack;
+use Plack::Request;
__PACKAGE__->mk_accessors(qw(dispatcher _view_handlers stash buffer));
commit 9d96260ce0ddc0f3e5a155165e615ee44a663998
Author: Chia-liang Kao <clkao at clkao.org>
Date: Fri Jan 29 21:42:45 2010 +0800
ignore headers for form-protocol test.
diff --git a/t/Jifty.pm b/t/Jifty.pm
index 37edbb5..428a7e9 100644
--- a/t/Jifty.pm
+++ b/t/Jifty.pm
@@ -17,6 +17,7 @@ sub request_from_webform {
my $form = shift;
my $r = Jifty::Request->new->from_webform(%$form);
delete $r->{env};
+ delete $r->{headers};
return $r;
}
commit f690630d55d500c6fe8ec6c1dcd208c2cfc0db46
Author: Chia-liang Kao <clkao at clkao.org>
Date: Fri Jan 29 21:44:34 2010 +0800
Make use of cookies parsed by Plack::Request.
diff --git a/Makefile.PL b/Makefile.PL
index a261c5e..3cada72 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -13,7 +13,6 @@ requires('Class::Data::Inheritable');
requires('Class::Trigger' => '0.13');
requires('Clone' => '0.27');
requires('CGI' => '3.30');
-requires('CGI::Simple'); # CGI::Simple::Cookie
requires('CGI::Cookie::Splitter');
requires('Class::Inspector' => 1.20); # For File::ShareDir on Win32
requires('Crypt::CBC');
diff --git a/lib/Jifty/Request.pm b/lib/Jifty/Request.pm
index 30be3ec..744fc39 100644
--- a/lib/Jifty/Request.pm
+++ b/lib/Jifty/Request.pm
@@ -168,6 +168,7 @@ sub promote {
$self->arguments({});
$self->template_arguments({});
+ $req->cookies; # vivify plack.cookie.parsed
$self->{env} = $req->env;
$self->uri($req->uri);
$self->headers($req->headers);
diff --git a/lib/Jifty/Web/Session.pm b/lib/Jifty/Web/Session.pm
index 64ab825..23171f5 100644
--- a/lib/Jifty/Web/Session.pm
+++ b/lib/Jifty/Web/Session.pm
@@ -3,7 +3,6 @@ use strict;
package Jifty::Web::Session;
use base qw/Jifty::Object/;
-use CGI::Simple::Cookie ();
use DateTime ();
use Storable ();
$Storable::Deparse = 1;
@@ -111,11 +110,9 @@ sub load_by_kv {
sub _get_session_id_from_client {
my $self = shift;
- my %cookies = Jifty->web->request ? CGI::Simple::Cookie->parse(Jifty->web->request->env->{HTTP_COOKIE}) : ();
- my $cookie_name = $self->cookie_name;
- my $session_id
- = $cookies{$cookie_name} ? $cookies{$cookie_name}->value() : undef;
- return $session_id;
+ my $cookies = Jifty->web->request
+ ? Jifty->web->request->env->{'plack.cookie.parsed'} : {};
+ return $cookies->{$self->cookie_name};
}
=head2 unload
@@ -321,19 +318,14 @@ sub set_cookie {
$self->load unless $self->loaded;
my $cookie_name = $self->cookie_name;
- my %cookies = Jifty->web->request ? CGI::Simple::Cookie->parse(Jifty->web->request->env->{HTTP_COOKIE}) : ();
-
- my $cookie = CGI::Simple::Cookie->new(
- -name => $cookie_name,
- -value => $self->id,
- -expires => $self->expires,
- );
-
- if ( not $cookies{$cookie_name}
- or ( $cookies{$cookie_name} ne $cookie->as_string ) )
- {
- Jifty->web->response->cookies->{$cookie->name} = $cookie;
- }
+ my $cookies = Jifty->web->request ? Jifty->web->request->env->{'plack.cookie.parsed'} : {};
+ my $cookie = {
+ value => $self->id,
+ expires => $self->expires,
+ };
+ # XXX: do we every need to check the existing cookie to decide if
+ # we want to set the cookie this time?
+ Jifty->web->response->cookies->{$cookie_name} = $cookie;
}
=head2 cookie_name
commit 0b88a469f8f8e5b7fd1576d2521379753697c32b
Merge: 8391ce2 f690630
Author: Chia-liang Kao <clkao at clkao.org>
Date: Fri Jan 29 21:47:06 2010 +0800
Merge branch 'plack-1.0' into plack
-----------------------------------------------------------------------
More information about the Jifty-commit
mailing list