The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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.