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.