The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

HTTP::HeaderParser::XS - an XS extension for processing HTTP headers.

SYNOPSIS

  use HTTP::HeaderParser::XS;

  my $hdr = HTTP::HeaderParser::XS->new( \"GET / HTTP/1.0\r\nConnection: keep-alive\r\nHost: www.bar.com\r\n\r\n" );

  if ( $hdr->isResponse ) {
    # this is not a response in this simple demo, but it could be
    print "Response code: " . $hdr->getStatusCode . "\n";
    print "Connection header: " . $hdr->getHeader( 'Connection' ) . "\n";

  } else {
    # see if it's a GET request
    if ( $hdr->getMethod == M_GET ) {
      print "GET: " . $hdr->getURI() . "\n";

      # now let's rewrite the host header and rewrite the header :-)
      print "Host header was: " . $hdr->getHeader( 'Host' ) . "\n";
      $hdr->setHeader( 'Host', 'www.foo.com' );

      # show new headers, now that we changed something
      print "New headers:\n";
      print $hdr->getReconstructed . "\n";
      
    } else {
      print "Not a GET request!\n";
    }
  }

DESCRIPTION

This module parses HTTP headers using a C++ state machine. (Hence this being an XS module.) The goal is to be fast, not necessarily to do everything you could ever want.

Headers are not static, you can parse them, munge them, or even build them using this module. See the SYNOPSIS for more information on how to use this module.

KNOWN BUGS

There are no known bugs at this time. Please report any you find!

SEE ALSO

There is no place designated for support of this module. If you would like to contact the author, please see the email address below. Or, find him on the Perl IRC network as 'xb95', usually in various channels.

AUTHOR

Mark Smith, <mark@xb95.com>

COPYRIGHT AND LICENSE

Copyright (C) 2004-2008 by Mark Smith.

Copyright (C) 2004 by Danga Interactive, Inc.

Copyright (C) 2005-2007 by Six Apart, Ltd.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.4 or, at your option, any later version of Perl 5 you may have available.