=head1 NAME HTTP::MultiPartParser - HTTP MultiPart Parser =head1 SYNOPSIS $parser = HTTP::MultiPartParser->new( boundary => $boundary, on_header => $on_header, on_body => $on_body, ); while ($octets = read_octets_from_body()) { $parser->parse($octets); } $parser->finish; =head1 DESCRIPTION This class provides a low-level API for processing MultiPart MIME data streams conforming to MultiPart types as defined in L<RFC 2616|http://tools.ietf.org/html/rfc2616#section-3.7.2>. =head1 METHODS =head2 new $parser = HTTP::MultiPartParser->new( %attributes ); This constructor returns a instance of C<HTTP::MultiPartParser>. Valid attributes inculde: =over 4 =item * C<boundary> (Mandatory) boundary => $value The unquoted and unescaped I<boundary> parameter value from the Content-Type header field. The I<boundary> parameter value consist of a restricted set of characters as defined in L<RFC 2046|http://tools.ietf.org/html/rfc2046#section-5.1.1>. DIGIT / ALPHA / "'" / "(" / ")" / "+" / "_" / "," / "-" / "." / "/" / ":" / "=" / "?" =item * C<on_header> (Mandatory) on_header => $callback->($header) This callback will be invoked when the header of a part has successfully been received. The callback will only be invoked once for each part. =item * C<on_header_as> on_header_as => 'unparsed' | 'lines' Defines the C<$header> value for the C<on_header> callback. =over 4 =item * C<unparsed> Callback invoked with an octet string containing the unparsed header. =item * C<lines> Callback invoked with an ARRAY reference, where each element of the array is a header line. Folding whitespace is removed from all lines and header continuation lines are unwrapped. =back =item * C<on_body> (Mandatory) on_body => $callback->($chunk, $final) This callback will be invoked when there is any data available for the body of a part. The callback may be invoked multiple times for each part. =item * C<on_error> on_error => $callback->($message) This callback will be invoked anytime an error occurs in the parser. After receiving an error the parser is no longer useful in its current state. =item * C<max_preamble_size> max_preamble_size => 32768 =item * C<max_header_size> max_header_size => 32768 =back =head2 parse $parser->parse($octets); Parses the given octets. =head2 finish $parser->finish; Finish the parsing. =head2 reset $parser->reset; Resets the state of the parser. =head2 is_aborted $boolean = $parser->is_aborted; Returns true if an error has occurred in the parser. =head1 DIAGNOSTICS =over 4 =item B<(F)> Usage: %s Method called with wrong number of arguments. =back =head1 SEE ALSO =over 4 =item L<RFC 2616 section 3.7.2 Multipart Types|http://tools.ietf.org/html/rfc2616#section-3.7.2> =item L<RFC 2046 section 5.1.1 Common Syntax|http://tools.ietf.org/html/rfc2046#section-5.1.1> =item L<RFC 2388 multipart/form-data|http://tools.ietf.org/html/rfc2388> =back =head1 SUPPORT =head2 Bugs / Feature Requests Please report any bugs or feature requests through the issue tracker at L<https://github.com/chansen/p5-http-multipartparser/issues>. You will be notified automatically of any progress on your issue. =head2 SOURCE CODE This is open source software. The code repository is available for public review and contribution under the terms of the license. L<httsp://github.com/chansen/p5-http-multipartparser> git clone https://github.com/chansen/p5-http-multipartparser =head1 AUTHOR Christian Hansen C<chansen@cpan.org> =head1 COPYRIGHT Copyright 2012-2017 by Christian Hansen. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.