NAME¶
POE::Filter::HTTP::Parser - A HTTP POE filter for HTTP clients or servers
VERSION¶
version 1.06
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 in "client" or "server" mode.
"client" is the default if "type" 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 to
"server" or "client", respectively.
If "type" is "client", then this accepts HTTP::Request
objects. If "type" is "server", 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.
CREDITS¶
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.
SEE ALSO¶
POE::Filter
HTTP::Parser
POE::Filter::HTTPD
AUTHOR¶
Chris Williams <chris@bingosnet.co.uk>
COPYRIGHT AND LICENSE¶
This software is copyright (c) 2011 by Chris Williams, Artur Bergman and Rocco
Caputo.
This is free software; you can redistribute it and/or modify it under the same
terms as the Perl 5 programming language system itself.