diff --git a/lib/WebGUI/Session.pm b/lib/WebGUI/Session.pm index 82ed7a84c..8441c089c 100644 --- a/lib/WebGUI/Session.pm +++ b/lib/WebGUI/Session.pm @@ -463,11 +463,16 @@ sub open { my $config = WebGUI::Config->new($webguiRoot,$configFile); my $self = {_config=>$config, _server=>$server}; bless $self , $class; - - # This does our Plack TODO logging + # $self->{_request} = $request if (defined $request); - use WebGUI::Session::Request; - $self->{_request} = WebGUI::Session::Request->new( r => $request, session => $self ) if $request; + if ($request && $request->isa('WebGUI::Session::Plack')) { + # Use our WebGUI::Session::Plack object that is supposed to do everything Apache2::* can + $self->{_request} = $request; + } else { + # Use WebGUI::Session::Request to wrap Apache2::* calls + require WebGUI::Session::Request; + $self->{_request} = WebGUI::Session::Request->new( r => $request, session => $self ); + } my $sessionId = shift || $self->http->getCookies->{$config->getCookieName} || $self->id->generate; $sessionId = $self->id->generate unless $self->id->valid($sessionId); diff --git a/lib/WebGUI/Session/Http.pm b/lib/WebGUI/Session/Http.pm index 67b65678d..d38b08303 100644 --- a/lib/WebGUI/Session/Http.pm +++ b/lib/WebGUI/Session/Http.pm @@ -92,6 +92,10 @@ Retrieves the cookies from the HTTP header and returns a hash reference containi sub getCookies { my $self = shift; if ($self->session->request) { + if ($self->session->request->isa('WebGUI::Session::Plack')) { + return $self->session->request->request->cookies; + } + # Have to require this instead of using it otherwise it causes problems for command-line scripts on some platforms (namely Windows) require APR::Request::Apache2; my $jarHashRef = APR::Request::Apache2->handle($self->session->request)->jar(); diff --git a/lib/WebGUI/Session/Plack.pm b/lib/WebGUI/Session/Plack.pm index 49ab5f62e..cde6a74c9 100644 --- a/lib/WebGUI/Session/Plack.pm +++ b/lib/WebGUI/Session/Plack.pm @@ -48,6 +48,12 @@ sub AUTOLOAD { sub uri { shift->request->request_uri(@_) } sub headers_in { shift->request->headers(@_) } +sub param { shift->request->param(@_) } +sub params { shift->request->params(@_) } + +# TODO: I suppose this should do some sort of IO::Handle thing +my @body; +sub print { shift; push @body, @_ } sub pnotes { my ($self, $key) = (shift, shift);