HTTP::Body(3p)

NAME
HTTP::Body - HTTP Body Parser

SYNOPSIS
    use HTTP::Body;

    sub handler : method {
        my ( $class, $r ) = @_;

        my $content_type   = $r->headers_in->get('Content-Type');
        my $content_length = $r->headers_in->get('Content-Length');

        my $body   = HTTP::Body->new( $content_type, $content_length );
        my $length = $content_length;

        while ( $length ) {

            $r->read( my $buffer, ( $length < 8192 ) ? $length : 8192 );

            $length -= length($buffer);

            $body->add($buffer);
        }

        my $uploads = $body->upload; # hashref
        my $params  = $body->param;  # hashref
        my $body    = $body->body;   # IO::Handle
    }

DESCRIPTION
HTTP::Body parses chunks of HTTP POST data and supports application/octet-stream, application/x-www-form-urlencoded, and multipart/form-data.

It is currently used by Catalyst to parse POST bodies.

METHODS

new Constructor. Takes content type and content length as parameters, returns a HTTP::Body object.

add Add string to internal buffer. Will call spin unless done. returns length before adding self.

body
    accessor for the body.

buffer
    read only accessor for the buffer.

content_length
    read only accessor for content length

content_type
    ready only accessor for the content type

init
    return self.

length
    read only accessor for body length.

spin
    Abstract method to spin the io handle.

state
    accessor for body state.

param
    accesor for http parameters.

upload

BUGS
Chunked requests are currently not supported.

AUTHOR
Christian Hansen, "ch@ngmedia.com"

Sebastian Riedel, "sri@cpan.org"

LICENSE
This library is free software. You can redistribute it and/or modify it under the same terms as perl itself.