AnyEvent-HTTP-ScopedClient
view release on metacpan or search on metacpan
lib/AnyEvent/HTTP/ScopedClient.pm view on Meta::CPAN
}
return $self;
}
sub host {
my ( $self, $h ) = @_;
}
sub protocol {
my ( $self, $p ) = @_;
}
sub auth {
my ( $self, $user, $pass ) = @_;
if ( !$user ) {
$self->options->{auth} = undef;
}
elsif ( !$pass && $user =~ m/:/ ) {
$self->options->{auth} = $user;
}
else {
$self->options->{auth} = "$user:$pass";
}
return $self;
}
sub header {
my ( $self, $name, $value ) = @_;
if ( 'HASH' eq ref $name ) {
while ( my ( $k, $v ) = each %$name ) {
$self->options->{headers}{$k} = $v;
}
}
else {
$self->options->{headers}{$name} = $value;
}
return $self;
}
sub headers {
my ( $self, $h ) = @_;
}
sub buildOptions {
my ( $self, $url, $params ) = @_;
$params->{options}{url} = URI->new($url);
$params->{options}{headers} ||= {};
}
sub BUILDARGS {
my ( $self, $url, %params ) = @_;
$self->buildOptions( $url, \%params );
return \%params;
}
sub get { shift->request( 'GET', @_ ) }
sub post { shift->request( 'POST', @_ ) }
sub patch { shift->request( 'PATCH', @_ ) }
sub put { shift->request( 'PUT', @_ ) }
sub delete { shift->request( 'DELETE', @_ ) }
sub head { shift->request( 'HEAD', @_ ) }
__PACKAGE__->meta->make_immutable;
1;
__END__
=pod
=encoding utf-8
=head1 NAME
AnyEvent::HTTP::ScopedClient - L<AnyEvent> based L<https://github.com/technoweenie/node-scoped-http-client>
=head1 VERSION
version 0.0.5
=head1 SYNOPSIS
my $client = AnyEvent::HTTP::ScopedClient->new('http://example.com');
$client->request('GET', sub {
my ($body, $hdr) = @_; # $body is undef if error occured
return if ( !$body || $hdr->{Status} !~ /^2/ );
# do something;
});
# shorcut for GET
$client->get(sub {
my ($body, $hdr) = @_;
# ...
});
# Content-Type: application/x-www-form-urlencoded
$client->post(
{ foo => 1, bar => 2 }, # note this.
sub {
my ($body, $hdr) = @_;
# ...
}
);
# application/x-www-form-urlencoded post request
$client->post(
"foo=1&bar=2" # and note this.
sub {
my ($body, $hdr) = @_;
# ...
}
);
# Content-Type: application/json
use JSON::XS;
$client->header('Content-Type', 'application/json')
->post(
encode_json({ foo => 1 }),
sub {
( run in 2.563 seconds using v1.01-cache-2.11-cpan-0bb4e1dffa6 )