AnyEvent-UWSGI
view release on metacpan or search on metacpan
lib/AnyEvent/UWSGI.pm view on Meta::CPAN
$hdl->timeout ($PERSISTENT_TIMEOUT);
push @$kaa, $hdl;
shift @$kaa while @$kaa > $MAX_PER_HOST;
}
#############################################################################
# utilities
# continue to parse $_ for headers and place them into the arg
sub _parse_hdr() {
my %hdr;
# things seen, not parsed:
# p3pP="NON CUR OTPi OUR NOR UNI"
$hdr{lc $1} .= ",$2"
while /\G
([^:\000-\037]*):
[\011\040]*
((?: [^\012]+ | \012[\011\040] )*)
\012
/gxc;
/\G$/
or return;
# remove the "," prefix we added to all headers above
substr $_, 0, 1, ""
for values %hdr;
\%hdr
}
#############################################################################
our $qr_nlnl = qr{(?<![^\012])\015?\012};
# maybe it should just become a normal object :/
sub _destroy_state(\%) {
my ($state) = @_;
$state->{handle}->destroy if $state->{handle};
%$state = ();
}
sub _error(\%$$) {
my ($state, $cb, $hdr) = @_;
&_destroy_state ($state);
$cb->(undef, $hdr);
()
}
our %IDEMPOTENT = (
DELETE => 1,
GET => 1,
HEAD => 1,
OPTIONS => 1,
PUT => 1,
TRACE => 1,
ACL => 1,
"BASELINE-CONTROL" => 1,
BIND => 1,
CHECKIN => 1,
CHECKOUT => 1,
COPY => 1,
LABEL => 1,
LINK => 1,
MERGE => 1,
MKACTIVITY => 1,
MKCALENDAR => 1,
MKCOL => 1,
MKREDIRECTREF => 1,
MKWORKSPACE => 1,
MOVE => 1,
ORDERPATCH => 1,
PROPFIND => 1,
PROPPATCH => 1,
REBIND => 1,
REPORT => 1,
SEARCH => 1,
UNBIND => 1,
UNCHECKOUT => 1,
UNLINK => 1,
UNLOCK => 1,
UPDATE => 1,
UPDATEREDIRECTREF => 1,
"VERSION-CONTROL" => 1,
);
=item uwsgi_request
Like C<AnyEvent::HTTP::http_request>
Also accepts C<modifier1> and C<modifier2> in C<%args>
=cut
sub uwsgi_request($$@) {
my $cb = pop;
my ($method, $url, %arg) = @_;
my %hdr;
$method = uc $method;
if (my $hdr = $arg{headers}) {
while (my ($k, $v) = each %$hdr) {
$hdr{lc $k} = $v;
}
}
# pseudo headers for all subsequent responses
my @pseudo = (URL => $url);
push @pseudo, Redirect => delete $arg{Redirect} if exists $arg{Redirect};
my $recurse = exists $arg{recurse} ? delete $arg{recurse} : $MAX_RECURSE;
return $cb->(undef, { @pseudo, Status => 599, Reason => "Too many redirections" })
if $recurse < 0;
( run in 1.091 second using v1.01-cache-2.11-cpan-13bb782fe5a )