NAME
POE::Filter::HTTP::Parser - A HTTP POE filter for HTTP clients or servers
VERSION
version 1.08
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,
typewhich determines whether the filter will act inclientorservermode.clientis the default iftypeis not specified.'type', set to either 'client' or 'server', default is 'client';
METHODS
getget_one_startget_one-
Takes an arrayref which contains lines of text. Returns an arrayref of either HTTP::Request or HTTP::Response objects depending on the
typethat 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
typeis set toserverorclient, respectively.If
typeisclient, then this accepts HTTP::Request objects. Iftypeisserver, 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
AUTHOR
Chris Williams <chris@bingosnet.co.uk>
COPYRIGHT AND LICENSE
This software is copyright (c) 2016 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.