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 Serversmy $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 clientsmy $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 <[email protected]>
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.