#!/usr/bin/perl
use strict;
use warnings;
use HTTP::Parser2::XS;
{
my $buf = "GET /a%20s?foo=bar HTTP/1.0\x0d\x0a".
"Host: localhost\x0d\x0a".
"Connection: keep-alive\x0d\x0a".
"\x0d\x0a";
my $r = {};
my $rv = parse_http_request($buf, $r);
if ($rv == -1) {
# bad request or internal error
} elsif ($rv == -2) {
# incomplete request, call again when there is more data
# in the buffer
} else {
# $rv contains the length of the request header on success
print << " END";
rv = $rv
method = "$r->{'_method'}"
request_uri = "$r->{'_request_uri'}"
uri = "$r->{'_uri'}"
query_string = "$r->{'_query_string'}"
protocol = "$r->{'_protocol'}"
keepalive = $r->{'_keepalive'}
END
}
};
{
my $buf = "HTTP/1.0 200 OK\x0d\x0a".
"Host: localhost\x0d\x0a".
"Content-Type: text/html\x0d\x0a".
"\x0d\x0a".
"asdf";
my $r = {};
my $rv = parse_http_response($buf, $r);
if ($rv == -1) {
# bad response or internal error
} elsif ($rv == -2) {
# incomplete response, call again when there is more data
# in the buffer
} else {
# $rv contains the length of the request header on success
print << " END";
rv = $rv
protocol = "$r->{'_protocol'}"
status = "$r->{'_status'}"
message = "$r->{'_message'}"
keepalive = $r->{'_keepalive'}
END
}
};