NAME

Net::Async::Webservice::Common::WithRequestWrapper - helper methods to perform HTTP request

VERSION

version 1.0.2

SYNOPSIS

package My::WS::Client {
 use Moo;
 with 'Net::Async::Webservice::Common::WithUserAgent';
 with 'Net::Async::Webservice::Common::WithRequestWrapper';
}

my $loop = IO::Async::Loop->new;
my $c = My::WS::Client->new({loop=>$loop});
$c->post('https://api.webservice.whatever/',$content)->then(sub{
  my ($response_body) = @_;
  say "Got <$response_body>";
  return Future->wrap();
})->get;

DESCRIPTION

This role provides a few methods to perform HTTP requests via a user_agent attribute / method (which is required, and could be provided by Net::Async::Webservice::Common::WithUserAgent or any other means).

Failures (both during connection, and as signaled by the HTTP response codes) are wrapped in Net::Async::Webservice::Common::Exception::HTTPError and returned as failed futures. On success, the future yields the decoded content of the response.

ATTRIBUTES

ssl_options

Optional hashref, its contents will be passed to user_agent's do_request method.

METHODS

request

$c->request($http_request) ==> $decoded_content

Performs the given request via the user_agent, with fail_on_error set; if the request succeeds, the returned future will yield the decoded content of the response. If the request fails, the future will fail with a two-element failure: a Net::Async::Webservice::Common::Exception::HTTPError and the string 'webservice'.

post

$c->post($url,$body) ==> $decoded_content

Shortcut to submit a very basic POST request. The $body will be UTF-8 encoded, no headers are set. Uses "request" to perform the actual request.

get

$c->get($url) ==> $decoded_content

Shortcut to submit a very basic GET request. No headers are set. Uses "request" to perform the actual request.

AUTHOR

Gianni Ceccarelli <gianni.ceccarelli@net-a-porter.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Net-a-porter.com.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.