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 Parser.

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.