ASP4
view release on metacpan or search on metacpan
lib/ASP4/Response.pm view on Meta::CPAN
}# end AddHeader()
sub SetHeader
{
my ($s, $name, $value) = @_;
$s->context->headers_out->header( $name => $value );
}# end AddHeader()
sub Headers
{
my $s = shift;
my $out = $s->context->headers_out;
map {{
$_ => $out->{$_}
}} keys %$out;
}# end Headers()
sub Redirect
{
my ($s, $url) = @_;
$s->Clear;
$s->Status( 301 );
$s->Expires( "-24H" )
unless $s->Expires;
$s->SetHeader( Location => $url );
$s->End;
return $s->Status;
}# end Redirect()
sub Declined { -1 }
sub Include
{
my ($s, $file, $args) = @_;
$s->Write( $s->_subrequest( $file, $args ) );
}# end Include()
sub TrapInclude
{
my ($s, $file, $args) = @_;
return $s->_subrequest( $file, $args );
}# end TrapInclude()
sub _subrequest
{
my ($s, $file, $args) = @_;
my $context = ASP4::HTTPContext->new( is_subrequest => 1 );
my $original_r = $s->context->r;
my $root = $s->context->config->web->www_root;
my $cgi = $s->context->cgi;
(my $uri = $file) =~ s/^\Q$root\E//;
my $r = ASP4::Mock::RequestRec->new(
uri => $uri,
args => $original_r->args,
);
SCOPE: {
local $ASP4::HTTPContext::_instance = $context;
local $ENV{SCRIPT_NAME} = $uri;
local $ENV{SCRIPT_FILENAME} = $file;
$context->setup_request( $r, $cgi );
$context->execute( $args, 1 );
};
return $context->r->buffer;
}# end _subrequest()
#sub _subrequest
#{
# my ($s, $file, $args) = @_;
#
# $s->context->add_buffer();
# my $original_r = $s->context->r;
# my $root = $s->context->config->web->www_root;
# (my $uri = $file) =~ s/^\Q$root\E//;
# my $r = ASP4::Mock::RequestRec->new(
# uri => $uri,
# args => $original_r->args,
# );
# local $ENV{SCRIPT_NAME} = $uri;
# local $ENV{SCRIPT_FILENAME} = $file;
# my $original_status = $s->Status();
# $s->context->setup_request( $r, $s->context->cgi );
# $s->context->execute( $args, 1 );
# $s->Flush;
# $s->Status( $original_status );
# my $buffer = $s->context->purge_buffer();
# $s->context->{r} = $original_r;
# $s->context->did_end( 0 );
# return $r->buffer;
#}# end _subrequest()
sub DESTROY
{
my $s = shift;
undef(%$s);
}# end DESTROY()
1;# return true:
=pod
=head1 NAME
ASP4::Response - Interface to the outgoing HTTP response
=head1 SYNOPSIS
$Response->ContentType("text/html");
$Response->Status( 200 );
$Response->Clear();
$Response->Flush();
$Response->Write("Hello, World!");
$Response->AddHeader( 'x-awesomeness' => '100%' );
$Response->SetHeader( 'x-velocity' => '100MPH' );
# Expires in the future:
$Response->Expires( '30M' ); # 30 minutes from now
$Response->Expires( '30H' ); # 30 hours from now
$Response->Expires( '30D' ); # 30 days from now
# Expires in the past:
$Response->Expires( '-30M' ); # 30 minutes ago
$Response->Expires( '-30H' ); # 30 hours ago
$Response->Expires( '-30D' ); # 30 days ago
$Response->SetCookie(
# Required parameters:
name => "customer-email",
value => $Form->{email},
# The rest are optional:
expires => '30D', # 30 days
path => '/',
domain => '.mysite.com',
);
$Response->Redirect( "/path/to/page.asp" );
$Response->Include( $Server->MapPath("/my/include.asp") );
$Response->Include( $Server->MapPath("/my/include.asp"), \%args );
( run in 1.710 second using v1.01-cache-2.11-cpan-39bf76dae61 )