NAME
ASP4::Response - Interface to the outgoing HTTP response
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
);
my
$string
=
$Response
->TrapInclude(
$Server
->MapPath(
"/my/widget.asp"
) );
my
$string
=
$Response
->TrapInclude(
$Server
->MapPath(
"/my/widget.asp"
), \
%args
);
return
$Response
->Declined;
$Response
->End;
while
( 1 ) {
last
unless
$Response
->IsClientConnected();
$Response
->Write(
"Still Here!<br/>"
);
sleep
(1);
}
my
HTTP::Headers
$headers
=
$Response
->Headers;
# Read-only:
my
$expires_on
=
$Response
->ExpiresAbsolute;
DESCRIPTION
The $Response
object offers a unified interface to send content back to the client.
PROPERTIES
ContentType( [$type] )
Sets or gets the content-type
header for the response. Examples are text/html
, image/gif
, text/csv
, etc.
Status( [$status] )
Sets or gets the Status
header for the response. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html for details.
NOTE: Only the numeric part is necessary - eg: 200, 301, 404, etc.
Headers()
Returns the HTTP::Headers object that will be used for the outgoing response.
If necessary, you can manipulate this object in any way you see fit.
Declined
For use within a ASP4::RequestFilter subclass, like this:
sub
run {
# Permit requests only every other second:
if
(
time
() % 2 ) {
return
$Response
->Declined;
}
else
{
$Response
->Write(
"Try again"
);
return
$Response
->End;
}
}
IsClientConnected
In a ModPerl environment, this can be used to determine whether the client has closed the connection (hit the "Stop" button or closed their browser). Useful within a long-running loop.
METHODS
Write( $str )
Adds $str
to the output buffer.
Flush( )
Causes the output buffer to be flushed to the client.
End( )
Aborts the current request.
Example:
# Good:
return
$Response
->End;
Simply calling...
# Bad!
$Response
->End;
...will not work as intended.
AddHeader( $name => $value )
Appends $value
to the header $name
.
SetHeader( $name => $value )
Sets (and replaces) the header $name
to the value of $value
.
SetCookie( %args )
Adds a new cookie to the response.
%args
must contain the following:
name
A string - the name of the cookie.
value
The value of the cookie.
Other parameters are:
expires
Can be in one of the following formats:
30M
Minutes - how many minutes from "now" calculated as
time() + (30 * 60)
Example:
expires
=>
'30M'
expires
=>
'-5M'
# 5 minutes ago
2H
Hours - how many hours from "now" calculated as
time() + (2 * 60 * 60)
Example:
expires
=>
'2H'
# 2 hours
expires
=>
'12H'
# 12 Hours
7D
Days - how many days from "now" calculated as
time() + (7 * 60 * 60 * 24)
Example:
expires
=>
'7D'
# A week
expires
=>
'30D'
# A month
path
Defaults to "
/
" - you can restrict the "path" that the cookie will apply to.domain
Defaults to whatever you set your config->data_connections->session->cookie_domain to in your asp4-config.json. Otherwise defaults to
$ENV{HTTP_HOST}
.You can override the defaults by passing in a domain, but the browser may not accept other domains. See http://www.ietf.org/rfc/rfc2109.txt for details.
Redirect( $url )
Causes the following HTTP header to be sent:
Status: 301 Moved
Location:
$url
Include( $path [, \%args ] )
Executes the ASP script at $path
and includes its output. Additional \%args
may be passed along to the include.
The passed-in args are accessible to the include like this:
<%
my
(
$self
,
$context
,
$args
) =
@_
;
# Args is a hashref:
%>
TrapInclude( $path [, \%args ] )
Executes the ASP script at $path
and returns its output. Additional \%args
may be passed along to the include.
The passed-in args are accessible to the include like this:
<%
my
(
$self
,
$context
,
$args
) =
@_
;
# Args is a hashref:
%>
BUGS
It's possible that some bugs have found their way into this release.
Use RT http://rt.cpan.org/NoAuth/Bugs.html?Dist=ASP4 to submit bug reports.
HOMEPAGE
Please visit the ASP4 homepage at http://0x31337.org/code/ to see examples of ASP4 in action.