NAME
   HTTP::MessageParser - Parse HTTP Messages

SYNOPSIS
       use HTTP::MessageParser;

       my ( $message, @request );

       while ( my $line = $client->getline ) {
           next if !$message && $line eq "\x0D\x0A"; # RFC 2616 4.1
           $message .= $line;
           last if $message =~ /\x0D\x0A\x0D\x0A$/;
       }

       eval {
           @request = HTTP::MessageParser->parse_request($message);
       };

       if ( $@ ) {
           # 400 Bad Request
       }

       # ...

DESCRIPTION
   Parse HTTP/1.0 and HTTP/1.1 Messages.

METHODS
   parse_headers( $string )
           my @headers = HTTP::MessageParser->parse_headers($string);
           my $headers = HTTP::MessageParser->parse_headers($string);

       Parses "Message Headers". "field-name"'s are lowercased. Leading and
       trailing "LWS" is removed. "LWS" occurring between "field-content"
       are replaced with a single "SP". Takes one argument, a string or a
       reference to a string, if it's a reference it will be consumed.

   parse_request( $string )
           my ( $Method, $Request_URI, $HTTP_Version, $Headers, $Body )
             = HTTP::MessageParser->parse_request($string);

       Parses a Request. Expects a "Request-Line" followed by zero more
       header fields and an empty line. Content occurring after end of
       header fields is returned as a string reference, $Body. Takes one
       argument, a string or a reference to a string, if it's a reference
       it will be consumed.

       Throws an exception upon failure.

   parse_request_line( $string )
           my ( $Method, $Request_URI, $HTTP_Version )
             = HTTP::MessageParser->parse_request_line($string);

       Parses a "Request-Line". Any leading "CRLF" is ignored. Takes one
       argument, a string or a reference to a string, if it's a reference
       it will be consumed.

       Throws an exception upon failure.

   parse_response( $string )
           my ( $HTTP_Version, $Status_Code, $Reason_Phrase, $Headers, $Body )
             = HTTP::MessageParser->parse_response($string);

       Parses a Response. Expects a "Status-Line" followed by zero more
       header fields and an empty line. Content occurring after end of
       header fields is returned as a string reference, $Body. Takes one
       argument, a string or a reference to a string, if it's a reference
       it will be consumed.

       Throws an exception upon failure.

   parse_response_line( $string )
           my ( $HTTP_Version, $Status_Code, $Reason_Phrase )
             = HTTP::MessageParser->parse_response_line($string);

       Parses a "Status-Line". Takes one argument, a string or a reference
       to a string, if it's a reference it will be consumed.

       Throws an exception upon failure.

   parse_version( $string )
           my ( $major, $minor ) = HTTP::MessageParser->parse_version($string);
           my $version = HTTP::MessageParser->parse_version($string);

       Parses a "HTTP-Version" string. In scalar context it returns a
       version number ( "major * 1000 + minor" ). In list context it
       returns "major" and "minor" as two separate integers.

       Throws an exception upon failure.

EXPORTS
   Nothing by default. Following subroutines can be exported:

   parse_headers
   parse_request
   parse_request_line
   parse_response
   parse_response_line
   parse_version

SEE ALSO
   <http://www.w3.org/Protocols/rfc2616/rfc2616.html>

   HTTP::Request

   HTTP::Response

   HTTP::Message

   HTTP::Parser

AUTHOR
   Christian Hansen "[email protected]"

COPYRIGHT
   This program is free software, you can redistribute it and/or modify it
   under the same terms as Perl itself.