File Coverage

blib/lib/WebService/Pixela/Pixel.pm
Criterion Covered Total %
statement 65 65 100.0
branch 12 12 100.0
condition 14 19 73.6
subroutine 14 14 100.0
pod 6 8 75.0
total 111 118 94.0


line stmt bran cond sub pod time code
1             package WebService::Pixela::Pixel;
2 6     6   204941 use 5.010001;
  6         27  
3 6     6   33 use strict;
  6         14  
  6         124  
4 6     6   29 use warnings;
  6         21  
  6         187  
5 6     6   32 use Carp qw/croak/;
  6         13  
  6         5001  
6              
7             our $VERSION = "0.01";
8              
9             sub new {
10 43     43 0 98 my ($class,$pixela_client) = @_;
11 43         160 return bless +{
12             client => $pixela_client,
13             }, $class;
14             }
15              
16              
17             sub client {
18 49     49 0 85 my $self = shift;
19 49         131 return $self->{client};
20             }
21              
22             sub post {
23 4     4 1 1811 my ($self,%args) = @_;
24 4         8 my $params = {};
25              
26             #check graphID
27 4         14 my $id = $self->_check_id($args{id});
28              
29             #check date
30 4   66     92 $params->{date} = $args{date} // croak 'require date';
31 3         10 $params->{date} .= '';
32              
33             #check quantity
34 3   66     94 $params->{quantity} = $args{quantity} // croak 'require quantity';
35 2         5 $params->{quantity}.= '';
36              
37             #check optionalData
38 2 100       8 $params->{optionalData} = $args{optional_data} if $args{optional_data};
39              
40 2         6 my $path = $self->_create_path($id);
41 2         5 return $self->client->request_with_xuser_in_header('POST',$path,$params);
42             }
43              
44             sub get {
45 2     2 1 35 my ($self, %args) = @_;
46              
47 2         8 my $id = $self->_check_id($args{id});
48              
49 2   66     90 my $date = $args{date} // croak 'require date';
50              
51 1         4 my $path = $self->_create_path($id,$date);
52 1         3 return $self->client->request_with_xuser_in_header('GET',$path);
53             }
54              
55             sub update {
56 4     4 1 2162 my ($self,%args) = @_;
57              
58 4         14 my $id = $self->_check_id($args{id});
59              
60             #check date
61 4   66     93 my $date = $args{date} // croak 'require date';
62              
63 3         7 my $params = {};
64              
65             #check quantity
66 3 100       12 $params->{quantity} = $args{quantity} . '' if $args{quantity};
67              
68             #check optionalData
69 3 100       8 $params->{optionalData} = $args{optional_data} if $args{optional_data};
70              
71 3         9 my $path = $self->_create_path($id,$date);
72 3         6 return $self->client->request_with_xuser_in_header('PUT',$path,$params);
73             }
74              
75             sub increment {
76 2     2 1 1121 my ($self,%args) = @_;
77 2         7 my $client = $self->client;
78              
79 2         10 my $id = $self->_check_id($args{id});
80              
81 2         6 my $path = $self->_create_path($id);
82 2         6 $path = $path . '/increment';
83              
84 2   100     61 my $length = $args{length} // 0;
85              
86 2         8 return $client->request_with_dual_in_header('PUT',$path,$length);
87             }
88              
89             sub decrement {
90 2     2 1 1110 my ($self,%args) = @_;
91 2         10 my $client = $self->client;
92              
93 2         9 my $id = $self->_check_id($args{id});
94              
95 2         8 my $path = $self->_create_path($id);
96 2         7 $path = $path . '/decrement';
97              
98 2   100     8 my $length = $args{length} // 0;
99              
100 2         7 return $client->request_with_dual_in_header('PUT',$path,$length);
101             }
102              
103             sub delete {
104 2     2 1 38 my ($self,%args) = @_;
105 2         6 my $client = $self->client;
106              
107 2         9 my $id = $self->_check_id($args{id});
108 2   66     142 my $date = $args{date} // croak 'require date';
109              
110 1         4 my $path = $self->_create_path($id,$date);
111              
112 1         9 return $self->client->request_with_xuser_in_header('DELETE',$path);
113             }
114              
115             sub _check_id {
116 19     19   95 my ($self,$arg_id) = @_;
117              
118 19 100       58 my $id = $arg_id ? $arg_id : $self->client->graph->id();
119 19 100       225 croak 'require graph_id' unless $id;
120 18         45 return $id;
121             }
122              
123             sub _create_path {
124 17     17   2689 my ($self,$id,$date) = @_;
125 17         37 my $path = 'users/'.$self->client->username.'/graphs/'.$id;
126 17 100       117 return defined $date ? $path . '/' . $date : $path;
127             }
128              
129              
130             1;
131             __END__