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