5 use base 'Class::Accessor::Fast';
7 use Params::Validate qw[];
8 use HTTP::Body::Context qw[];
9 use HTTP::Body::Parser qw[];
11 __PACKAGE__->mk_accessors( qw[ context parser ] );
16 my $class = ref $_[0] ? ref shift : shift;
18 # bring in compat for old API <= 0.6
20 require HTTP::Body::Compat;
21 return HTTP::Body::Compat->new(@_);
24 my $params = Params::Validate::validate_with(
28 type => Params::Validate::SCALAR,
33 type => Params::Validate::OBJECT,
34 isa => 'HTTP::Body::Context',
38 type => Params::Validate::OBJECT,
39 isa => 'HTTP::Body::Parser',
43 called => "$class\::new"
46 return bless( {}, $class )->initialize($params);
50 my ( $self, $params ) = @_;
52 my $bufsize = delete $params->{bufsize} || 65536;
54 $params->{parser} ||= HTTP::Body::Parser->new(
56 context => $params->{context}
59 while ( my ( $param, $value ) = each( %{ $params } ) ) {
60 $self->$param($value);
67 return shift->parser->eos;
71 return shift->parser->put(@_);