Limper-Engine-PSGI
view release on metacpan or search on metacpan
lib/Limper/Engine/PSGI.pm view on Meta::CPAN
delete request->{$_} for keys %{&request};
request->{method} = $env->{REQUEST_METHOD};
request->{uri} = $env->{REQUEST_URI};
request->{version} = $env->{SERVER_PROTOCOL};
request->{remote_host} = $env->{REMOTE_HOST};
(request->{scheme}, request->{authority}, request->{path}, request->{query}, request->{fragment}) =
request->{uri} =~ m|(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?|; # from https://metacpan.org/pod/URI
request->{headers} = {};
request->{headers}{'content-length'} = $env->{CONTENT_LENGTH} if exists $env->{CONTENT_LENGTH};
request->{headers}{'content-type'} = $env->{CONTENT_TYPE} if exists $env->{CONTENT_TYPE};
for my $header (grep { /^HTTP_/ } keys %$env) {
my $name = lc $header;
$name =~ s/^http_//;
$name =~ s/_/-/g;
my @values = split /, /, $env->{$header};
request->{headers}{$name} = @values > 1 ? \@values : $values[0];
}
# this covers both requests with Content-Length: <INT> and Tranfer-Encoding: chunked
$env->{'psgi.input'}->read(request->{body}, $env->{CONTENT_LENGTH}) if exists $env->{CONTENT_LENGTH};
}
( run in 2.296 seconds using v1.01-cache-2.11-cpan-524268b4103 )