AnyEvent-ReverseHTTP
view release on metacpan or search on metacpan
eg/proxy.pl view on Meta::CPAN
#!/usr/bin/perl
use strict;
use warnings;
use HTTP::Request::Common;
use AnyEvent::HTTP;
use AnyEvent::ReverseHTTP;
my $proxy_to = $ARGV[0] or die 'require proxy target';
my $w = AnyEvent::ReverseHTTP->new(
on_register => sub {
print "You can connect to your server at $_[0]\n";
},
on_request => sub {
my $req = shift;
my $resback = AnyEvent->condvar;
my $target = $proxy_to . $req->uri;
# proxy
my %headers = map { $_ => $req->header($_) } $req->headers->header_field_names;
http_request(
$req->method, $target,
headers => \%headers,
body => $req->content,
sub {
my ($body, $hdr) = @_;
my $res = HTTP::Response->new( $hdr->{Status} );
for my $header (keys %{ $hdr || {} }) {
$res->header( $header => $hdr->{$header} );
}
$res->content( $body );
$resback->send($res);
}
);
$resback;
},
)->connect;
AnyEvent->condvar->recv;
( run in 0.699 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )