]>
Dogcows Code - chaz/p5-CGI-Ex/blob - lib/CGI/Ex/App/PSGI.pm
e5084d7f0caca647fb17b05e58e31b9a3da80e81
1 package CGI
::Ex
::App
::PSGI
;
11 my ($class, $app) = @_;
13 Plack
::Util
::load_class
($app);
16 my $cgix = CGI
::Ex-
>new(object
=> CGI
::PSGI-
>new($env));
17 if ($env->{'psgi.streaming'}) {
19 local $CGI::Ex
::CURRENT
= $cgix;
20 local %ENV = (%ENV, $class->cgi_environment($env));
21 local *STDIN
= $env->{'psgi.input'};
22 local *STDERR
= $env->{'psgi.errors'};
24 $cgix->{psgi_responder
} = shift;
27 script_name
=> $env->{SCRIPT_NAME
},
28 path_info
=> $env->{PATH_INFO
},
29 )->navigate->cgix->psgi_respond->close;
32 local $CGI::Ex
::CURRENT
= $cgix;
33 local %ENV = (%ENV, $class->cgi_environment($env));
34 local *STDIN
= $env->{'psgi.input'};
35 local *STDERR
= $env->{'psgi.errors'};
37 $app->new(cgix
=> $cgix)->navigate->cgix->psgi_response;
42 ### Convert a PSGI environment into a CGI environment.
44 my ($class, $env) = @_;
47 GATEWAY_INTERFACE
=> 'CGI/1.1',
48 HTTPS
=> $env->{'psgi.url_scheme'} eq 'https' ? 'ON' : 'OFF',
49 SERVER_SOFTWARE
=> "CGI-Ex-App-PSGI/$VERSION",
50 REMOTE_ADDR
=> '127.0.0.1',
51 REMOTE_HOST
=> 'localhost',
52 map { $_ => $env->{$_} } grep { !/^psgix?\./ } keys %$env,
55 return wantarray ? %$environment : $environment;
This page took 0.037001 seconds and 4 git commands to generate.