PEF-Front
view release on metacpan or search on metacpan
lib/PEF/Front/Request.pm view on Meta::CPAN
package PEF::Front::Request;
use strict;
use warnings;
use JSON;
use Carp ();
use utf8;
use Encode;
use PEF::Front::Headers;
use PEF::Front::File;
use PEF::Front::Config;
use XML::Simple;
use URI;
my $coro_ae = $INC{'Coro/AnyEvent.pm'} ? 1 : 0;
sub new {
my ($class, $env) = @_;
Carp::croak(q{$env is required})
unless defined $env && ref($env) eq 'HASH';
my $self = bless {env => $env}, $class;
$self->_parse;
$self;
}
sub env {$_[0]->{env}}
sub remote_ip {$_[0]->{env}{REMOTE_ADDR}}
sub protocol {$_[0]->{env}{SERVER_PROTOCOL}}
sub http_method {$_[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 query_string {$_[0]->{env}{QUERY_STRING}}
sub script_name {$_[0]->{env}{SCRIPT_NAME}}
sub scheme {$_[0]->{env}{'psgi.url_scheme'}}
sub uri {URI->new($_[0]->base)}
sub secure {$_[0]->scheme eq 'https'}
sub _input {$_[0]->{env}{'psgi.input'}}
sub content_length {$_[0]->{env}{CONTENT_LENGTH}}
sub content_type {$_[0]->{env}{CONTENT_TYPE}}
sub raw_body {$_[0]->{raw_body}}
sub content_encoding {$_[0]->headers->get_header("content_encoding")}
sub header {$_[0]->headers->get_header($_[1])}
sub referer {$_[0]->headers->get_header("referer")}
sub user_agent {$_[0]->headers->get_header("user_agent")}
sub set_out_header {$_[0]->out_headers->set_header($_[1] => $_[2])}
sub remove_out_header {$_[0]->out_headers->remove_header($_[1])}
sub get_out_header {$_[0]->out_headers->get_header($_[1])}
sub set_out_cookie {$_[0]->out_cookies->set_header($_[1] => $_[2])}
sub remove_out_cookie {$_[0]->out_cookies->remove_header($_[1])}
sub get_out_cookie {$_[0]->out_cookies->get_header($_[1])}
sub method {
my $xm = $_[0]{method};
return $xm if $xm;
if (my $hmo = $_[0]->{env}{HTTP_X_HTTP_METHOD_OVERRIDE}) {
$_[0]{method} = uc $hmo;
} elsif (
$_[0]->{env}{HTTP_UPGRADE}
&& $_[0]->{env}{HTTP_CONNECTION}
&& $_[0]->{env}{HTTP_UPGRADE} eq 'WebSocket'
&& $_[0]->{env}{HTTP_CONNECTION} eq 'Upgrade'
)
{
$_[0]{method} = 'WEBSOCKET';
} elsif ($_[0]->{env}{HTTP_ACCEPT}
&& $_[0]->{env}{HTTP_ACCEPT} eq 'text/event-stream')
{
$_[0]{method} = 'SSE';
} else {
$_[0]{method} = $_[0]->{env}{REQUEST_METHOD};
}
$_[0]{method};
}
( run in 0.704 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )