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   204620 use 5.010001;
  6         24  
3 6     6   32 use strict;
  6         11  
  6         119  
4 6     6   36 use warnings;
  6         21  
  6         157  
5 6     6   41 use Carp qw/croak/;
  6         18  
  6         4612  
6              
7             our $VERSION = "0.021";
8              
9             sub new {
10 44     44 0 89 my ($class,$pixela_client) = @_;
11 44         151 return bless +{
12             client => $pixela_client,
13             }, $class;
14             }
15              
16              
17             sub client {
18 49     49 0 125 my $self = shift;
19 49         133 return $self->{client};
20             }
21              
22             sub post {
23 4     4 1 1805 my ($self,%args) = @_;
24 4         9 my $params = {};
25              
26             #check graphID
27 4         15 my $id = $self->_check_id($args{id});
28              
29             #check date
30 4   66     108 $params->{date} = $args{date} // croak 'require date';
31 3         9 $params->{date} .= '';
32              
33             #check quantity
34 3   66     81 $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         6 return $self->client->request_with_xuser_in_header('POST',$path,$params);
42             }
43              
44             sub get {
45 2     2 1 34 my ($self, %args) = @_;
46              
47 2         9 my $id = $self->_check_id($args{id});
48              
49 2   66     107 my $date = $args{date} // croak 'require date';
50              
51 1         4 my $path = $self->_create_path($id,$date);
52 1         4 return $self->client->request_with_xuser_in_header('GET',$path);
53             }
54              
55             sub update {
56 4     4 1 2182 my ($self,%args) = @_;
57              
58 4         15 my $id = $self->_check_id($args{id});
59              
60             #check date
61 4   66     87 my $date = $args{date} // croak 'require date';
62              
63 3         7 my $params = {};
64              
65             #check quantity
66 3 100       14 $params->{quantity} = $args{quantity} . '' if $args{quantity};
67              
68             #check optionalData
69 3 100       9 $params->{optionalData} = $args{optional_data} if $args{optional_data};
70              
71 3         8 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 1150 my ($self,%args) = @_;
77 2         6 my $client = $self->client;
78              
79 2         8 my $id = $self->_check_id($args{id});
80              
81 2         8 my $path = $self->_create_path($id);
82 2         6 $path = $path . '/increment';
83              
84 2   100     45 my $length = $args{length} // 0;
85              
86 2         7 return $client->request_with_dual_in_header('PUT',$path,$length);
87             }
88              
89             sub decrement {
90 2     2 1 1117 my ($self,%args) = @_;
91 2         9 my $client = $self->client;
92              
93 2         8 my $id = $self->_check_id($args{id});
94              
95 2         6 my $path = $self->_create_path($id);
96 2         6 $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 34 my ($self,%args) = @_;
105 2         5 my $client = $self->client;
106              
107 2         8 my $id = $self->_check_id($args{id});
108 2   66     123 my $date = $args{date} // croak 'require date';
109              
110 1         3 my $path = $self->_create_path($id,$date);
111              
112 1         4 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       55 my $id = $arg_id ? $arg_id : $self->client->graph->id();
119 19 100       211 croak 'require graph_id' unless $id;
120 18         42 return $id;
121             }
122              
123             sub _create_path {
124 17     17   2638 my ($self,$id,$date) = @_;
125 17         38 my $path = 'users/'.$self->client->username.'/graphs/'.$id;
126 17 100       118 return defined $date ? $path . '/' . $date : $path;
127             }
128              
129              
130             1;
131             __END__