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 )