APR-Emulate-PSGI
view release on metacpan or search on metacpan
lib/APR/Emulate/PSGI.pm view on Meta::CPAN
=item psgi_headers
Returns an arrayref of headers which can be used when building a PSGI
response.
A Content-Length header is not included, and must be added in accordance
with the L<PSGI> specification, while building the PSGI response.
my $headers_arrayref = $r->psgi_headers();
=cut
sub psgi_headers {
my ($self) = @_;
my @headers = ();
my $status = $self->psgi_status();
if ($status eq '204' || $status eq '304' || $status =~ /^1/) {
# Must not return Content-Type header, per PSGI spec.
}
else {
# Add Content-Type header.
push @headers, (
'Content-Type',
($self->{'content_type'} || 'text/html'),
);
}
# Add other headers that have been set.
$self->headers_out()->do(
sub {
my ($key, $value) = @_;
push @headers, $key, $value;
}
);
return \@headers;
};
=back
=head2 Request Methods
=over 4
=item headers_in
Emulates L<Apache2::RequestRec/headers_in>.
=cut
sub headers_in {
my ($self) = @_;
return $self->{'headers_in'} if (defined($self->{'headers_in'}));
my $environment = $self->{'cgi_mode'}
? \%ENV
: $self->{'psgi_env'};
my %headers = (
map { $_ => $environment->{$_} }
grep { $_ =~ /^HTTPS?_/ }
keys %{ $environment }
);
foreach my $field ('CONTENT_TYPE', 'CONTENT_LENGTH') {
$headers{$field} = $environment->{$field} if (defined($environment->{$field}));
}
return $self->{'headers_in'} = HTTP::Headers->new(%headers);
}
=item method
Emulates L<Apache2::RequestRec/method>.
=cut
sub method {
my ($self) = @_;
if ($self->{'cgi_mode'}) {
return $ENV{'REQUEST_METHOD'};
}
return $self->{'psgi_env'}{'REQUEST_METHOD'};
}
=item uri
Emulates L<Apache2::RequestRec/uri>.
=cut
sub uri {
my ($self) = @_;
if ($self->{'cgi_mode'}) {
return $ENV{'PATH_INFO'};
}
return $self->{'psgi_env'}{'PATH_INFO'};
}
=item parsed_uri
Emulates L<Apache2::URI/parsed_uri>.
=cut
sub parsed_uri {
my ($self) = @_;
if ($self->{'cgi_mode'}) {
return $self->{'uri'} //= URI->new($ENV{'REQUEST_URI'});
}
return $self->{'uri'} //= URI->new($self->{'psgi_env'}{'REQUEST_URI'});
}
=item args
Emulates L<Apache2::RequestRec/args>.
=cut
sub args {
( run in 0.530 second using v1.01-cache-2.11-cpan-140bd7fdf52 )