NAME
POE::Filter::HTTP::Parser - A HTTP POE filter for HTTP clients or servers
SYNOPSIS
use POE::Filter::HTTP::Parser;
# For HTTP Servers
my $request_filter = POE::Filter::HTTP::Parser->new( type => 'server' );
my $arrayref_of_request_objects = $filter->get( [ $stream ] );
my $arrayref_of_HTTP_stream = $filter->put( $arrayref_of_response_objects );
# For HTTP clients
my $response_filter = POE::Filter::HTTP::Parser->new( type => 'client' );
my $arrayref_of_HTTP_stream = $filter->put( $arrayref_of_request_objects );
my $arrayref_of_response_objects = $filter->get( [ $stream ] );
DESCRIPTION
POE::Filter::HTTP::Parser is a POE::Filter for HTTP which is based on HTTP::Parser.
It can be used to easily create POE based HTTP servers or clients.
With the type
set to client
, which is the default behaviour, get
will parse HTTP::Response objects from HTTP streams and put
will accept HTTP::Request objects and convert them to HTTP streams.
With the type
set to server
, the reverse will happen. get
will parse HTTP::Request objects from HTTP streams and put
will accept HTTP::Response objects and convert them to HTTP streams. Like POE::Filter::HTTPD if there is an error parsing the HTTP request, this filter will generate a HTTP::Response object instead, to encapsulate the error message, suitable for simply sending back to the requesting client.
CONSTRUCTOR
new
-
Creates a new POE::Filter::HTTP::Parser object. Takes one optional argument,
type
which determines whether the filter will act inclient
orserver
mode.client
is the default iftype
is not specified.'type', set to either 'client' or 'server', default is 'client';
METHODS
get
get_one_start
get_one
-
Takes an arrayref which contains lines of text. Returns an arrayref of either HTTP::Request or HTTP::Response objects depending on the
type
that has been specified. get_pending
-
Returns any data remaining in a filter's input buffer. The filter's input buffer is not cleared, however. Returns an array reference if there's any data, or undef if the filter was empty.
put
-
Takes an arrayref of either HTTP::Response objects or HTTP::Request objects depending on whether
type
is set torequest
orresponse
, respectively.If
type
isresponse
, then this accepts HTTP::Request objects. Iftype
isrequest
, then this accepts HTTP::Response objects.This does make sense if you think about it.
The given objects are returned to their stream form.
clone
-
Makes a copy of the filter, and clears the copy's buffer.
AUTHOR
Chris BinGOs
Williams
The put
method for HTTP responses was borrowed from POE::Filter::HTTPD, along with the code to generate HTTP::Response on a parse error, by Artur Bergman and Rocco Caputo.
LICENSE
Copyright © Chris Williams, Artur Bergman and Rocco Caputo.
This module may be used, modified, and distributed under the same terms as Perl itself. Please see the license that came with your Perl distribution for details.