File Coverage

blib/lib/WWW/FCM/HTTP/Response.pm
Criterion Covered Total %
statement 47 50 94.0
branch 4 8 50.0
condition 1 2 50.0
subroutine 17 19 89.4
pod 0 9 0.0
total 69 88 78.4


line stmt bran cond sub pod time code
1             package WWW::FCM::HTTP::Response;
2              
3 3     3   16 use strict;
  3         5  
  3         68  
4 3     3   11 use warnings;
  3         6  
  3         71  
5 3     3   11 use JSON qw(decode_json);
  3         5  
  3         19  
6             use Class::Accessor::Lite (
7 3         13 new => 0,
8             ro => [qw/http_response content is_success sent_reg_ids/],
9 3     3   224 );
  3         5  
10              
11 3     3   1206 use WWW::FCM::HTTP::Response::ResultSet;
  3         6  
  3         834  
12              
13             sub new {
14 6     6 0 41 my ($class, $http_response) = @_;
15              
16 6         66 my $is_success = $http_response->is_success;
17 6         159 my $content = $http_response->content;
18 6         94 my $req_content = decode_json($http_response->request->content);
19              
20 6         245 my $sent_reg_ids = [];
21 6 100       26 if ($is_success) {
22 5         127 $content = decode_json $content;
23              
24 5 100       21 if (exists $content->{multicast_id}) {
25 4         10 $sent_reg_ids = $req_content->{registration_ids};
26             }
27             }
28             else {
29 1         12 $content = { error => $content };
30             }
31              
32 6         124 bless {
33             is_success => $is_success,
34             content => $content,
35             sent_reg_ids => $sent_reg_ids,
36             http_response => $http_response,
37             }, $class;
38             }
39              
40             sub success {
41 6     6 0 3495 shift->content->{success};
42             }
43              
44             sub failure {
45 6     6 0 3844 shift->content->{failure};
46             }
47              
48             sub message_id {
49 6     6 0 4374 shift->content->{message_id};
50             }
51              
52             sub multicast_id {
53 6     6 0 3994 shift->content->{multicast_id};
54             }
55              
56             sub canonical_ids {
57 6     6 0 4140 shift->content->{canonical_ids};
58             }
59              
60             sub error {
61 6     6 0 16278 shift->content->{error};
62             }
63              
64             sub has_error {
65 0     0 0 0 my $self = shift;
66 0 0       0 return 1 unless $self->is_success;
67 0 0       0 $self->error ? 1 : 0;
68             }
69              
70             sub results {
71 4     4 0 2792 my $self = shift;
72 4   50     15 my $results = $self->content->{results} || return;
73 4         48 WWW::FCM::HTTP::Response::ResultSet->new($results, $self->sent_reg_ids);
74             }
75              
76       0     sub DESTROY {};
77             sub AUTOLOAD {
78 1     1   1137 (my $method = our $AUTOLOAD) =~ s/.*:://;
79 3     3   16 no strict 'refs';
  3         4  
  3         96  
80 1         6 *{$AUTOLOAD} = sub {
81 3     3   12 use strict;
  3         12  
  3         191  
82 6     6   6094 my $self = shift;
83 6         38 $self->{http_response}->$method(@_);
84 1         17 };
85 1         4 goto &$AUTOLOAD;
86             }
87              
88             1;