Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
AnyEvent::HTTPD::RequeUser)Contributed Perl DocumenAnyEvent::HTTPD::Request(3)

       AnyEvent::HTTPD::Request	- A web	application request handle for

       This is the request object as generated by AnyEvent::HTTPD and given in
       the request callbacks.

       url This	method returns the URL of the current request as URI object.

       respond ([$res])
	   $res	can be:

	   o   an array	reference

	       Then the	array reference	has these elements:

		  my ($code, $message, $header_hash, $content) =
			[200, 'ok', { 'Content-Type' =>	'text/html' }, '<h1>Test</h1>' }]

	       You can remove most headers added by default (like
	       "Cache-Control",	"Expires", and "Content-Length") by setting
	       them to undef, like so:

		     200, 'OK',	{
		       'Content-Type'  => 'text/html',
		       'Cache-Control' => 'max-age=3600',
		       'Expires'       => undef,
		     'This data	will be	cached for one hour.'

	   o   a hash reference

	       If it was a hash	reference the hash is first searched for the
	       "redirect" key and if that key does not exist for the "content"

	       The value for the "redirect" key	should contain the URL that
	       you want	to redirect the	request	to.

	       The value for the "content" key should contain an array
	       reference with the first	value being the	content	type and the
	       second the content.

	   Here	is an example:

	      $httpd->reg_cb (
		 '/image/elmex'	=> sub {
		    my ($httpd,	$req) =	@_;

		    open IMG, "$ENV{HOME}/media/images/elmex.png"
		       or $req->respond	(
			     [404, 'not	found',	{ 'Content-Type' => 'text/plain' }, 'not found']

		    $req->respond ({ content =>	['image/png', do { local $/; <IMG> }] });

	   How to send large files:

	   For longer responses	you can	give a callback	instead	of a string to
	   the response	function for the value of the $content.

	      $req->respond ({ content => ['video/x-ms-asf', sub {
		 my ($data_cb) = @_;

		 # start some async retrieve operation,	for example use
		 # IO::AIO (with AnyEvent::AIO). Or retrieve chunks of data
		 # to send somehow else.

	      }	});

	   The given callback will receive as first argument either another
	   callback ($data_cb in the above example) or an undefined value,
	   which means that there is no	more data required and the transfer
	   has been completed (either by you sending no	more data, or by a
	   disconnect of the client).

	   The callback	given to "respond" will	be called whenever the send
	   queue of the	HTTP connection	becomes	empty (meaning that the	data
	   is written out to the kernel). If it	is called you have to start
	   delivering the next chunk of	data.

	   That	doesn't	have to	be immediately,	before the callback returns.
	   This	means that you can initiate for	instance an IO::AIO request
	   (see	also AnyEvent::AIO) and	send the data later.  That is what the
	   $data_cb callback is	for. You have to call it once you got the next
	   chunk of data. Once you sent	a chunk	of data	via $data_cb you can
	   just	wait until your	callback is called again to deliver the	next

	   If you are done transferring	all data call the $data_cb with	an
	   empty string	or with	no argument at all.

	   Please consult the example script "large_response_example" from the
	   "samples/" directory	of the AnyEvent::HTTPD distribution for	an
	   example of how to use this mechanism.

	   NOTE: You should supply a 'Content-Length' header if	you are	going
	   to send a larger file. If you don't do that the client will have no
	   chance to know if the transfer was complete.	To supply additional
	   header fields the hash argument format will not work. You should
	   use the array argument format for this case.

	   Returns true	if this	request	already	has been responded to.

       parm ($key)
	   Returns the first value of the form parameter $key or undef.

	   Returns list	of parameter names.

	   Returns a hash of form parameters. The value	is either the value of
	   the parameter, and in case there are	multiple values	present	it
	   will	contain	an array reference of values.

	   This	method returns the method of the current request.

	   Returns the request content or undef	if only	parameters for a form
	   were	transmitted.

	   This	method will return a hash reference containing the HTTP
	   headers for this HTTP request.

	   This	method returns the host/IP of the HTTP client this request was
	   received from.

	   This	method returns the TCP port number of the HTTP client this
	   request was received	from.

       Copyright 2008-2011 Robin Redeker, all rights reserved.

       This program is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.

perl v5.32.0			  2011-08-04	   AnyEvent::HTTPD::Request(3)


Want to link to this manual page? Use this URL:

home | help