File Coverage

blib/lib/AnyEvent/EC2/Tiny.pm
Criterion Covered Total %
statement 12 31 38.7
branch 0 4 0.0
condition n/a
subroutine 4 7 57.1
pod n/a
total 16 42 38.1


line stmt bran cond sub pod time code
1             package AnyEvent::EC2::Tiny;
2             {
3             $AnyEvent::EC2::Tiny::VERSION = '0.002';
4             }
5             # ABSTRACT: Tiny asynchronous (non-blocking) interface to EC2 using AnyEvent
6              
7 2     2   49141 use Moo;
  2         34504  
  2         12  
8 2     2   3503 use Carp;
  2         5  
  2         176  
9 2     2   172488 use HTTP::Tiny;
  2         121538  
  2         94  
10 2     2   2472 use AnyEvent::HTTP;
  2         82311  
  2         833  
11              
12             extends 'Net::EC2::Tiny';
13              
14             sub _request {
15 0     0     my $self = shift;
16 0           my $request = shift;
17 0           my $headers = shift;
18 0           my $success_cb = shift;
19 0           my $fail_cb = shift;
20              
21             http_post $self->base_url, $request, headers => $headers, sub {
22 0     0     my ( $body, $hdr ) = @_;
23              
24             # in case we fail
25 0 0         $hdr->{'Status'} !~ /^2/ and return $fail_cb->( {
26             type => 'HTTP',
27             data => { headers => $hdr, body => $body },
28             text => sprintf "POST Request failed: %s %s %s\n",
29             ( $hdr->{'Status'}, $hdr->{'Reason'}, $body ),
30             } );
31              
32             # we succeeded
33 0           my $xml = $self->_process($body);
34 0 0         $xml->{'Errors'} and return $fail_cb->( {
35             type => 'XML',
36             data => {
37             headers => $hdr,
38             body => $body,
39             xml => $xml,
40             errors => $xml->{'Errors'},
41             },
42             text => "Error: $body\n",
43             } );
44              
45 0           $success_cb->($xml);
46 0           };
47             }
48              
49             sub send {
50 0     0     my $self = shift;
51 0           my %args = @_;
52 0           my $success_cb = delete $args{'success_cb'};
53 0           my $fail_cb = delete $args{'fail_cb'};
54 0           my $request = $self->_sign(%args);
55 0           my $request_str = HTTP::Tiny->www_form_urlencode($request);
56 0           my $headers = { 'Content-Type' => 'application/x-www-form-urlencoded' };
57              
58 0           $self->_request( $request_str, $headers, $success_cb, $fail_cb );
59             }
60              
61             1;
62              
63             __END__