File Coverage

blib/lib/Amazon/PAApi5/Payload.pm
Criterion Covered Total %
statement 32 32 100.0
branch 1 2 50.0
condition 3 6 50.0
subroutine 8 8 100.0
pod 2 2 100.0
total 46 50 92.0


line stmt bran cond sub pod time code
1             package Amazon::PAApi5::Payload;
2 1     1   69681 use strict;
  1         13  
  1         30  
3 1     1   14 use warnings;
  1         2  
  1         31  
4 1     1   5 use Carp qw/croak/;
  1         1  
  1         48  
5 1     1   521 use String::CamelCase qw/decamelize/;
  1         613  
  1         56  
6 1     1   701 use JSON qw//;
  1         12633  
  1         46  
7             use Class::Accessor::Lite (
8 1         8 rw => [qw/
9             partner_tag
10             marketplace
11             partner_type
12             /],
13 1     1   526 );
  1         962  
14              
15             sub new {
16 2     2 1 1737 my $class = shift;
17 2 50       7 my $partner_tag = shift or croak 'partner_tag is required';
18 2   50     11 my $marketplace = shift || 'www.amazon.com';
19 2   50     11 my $opt = shift || {};
20              
21             return bless {
22             partner_tag => $partner_tag,
23             marketplace => $marketplace,
24 2   50     18 partner_type => $opt->{partner_type} || 'Associates',
25             }, $class;
26             }
27              
28             sub to_json {
29 2     2 1 626 my ($self, $data) = @_;
30              
31 2         6 my $hash = {};
32              
33 2         4 for my $k (keys %{$data}) {
  2         8  
34 5         11 $hash->{$k} = $data->{$k};
35             }
36              
37 2         7 for my $k (qw/
38             PartnerTag
39             Marketplace
40             PartnerType
41             /) {
42 6         37 my $method = decamelize($k);
43 6         200 $hash->{$k} = $self->$method;
44             }
45              
46 2         18 return JSON::to_json($hash, { utf8 => 0, canonical => 1 });
47             }
48              
49             1;
50              
51             __END__