File Coverage

blib/lib/API/Trello.pm
Criterion Covered Total %
statement 9 22 40.9
branch n/a
condition n/a
subroutine 3 5 60.0
pod 0 2 0.0
total 12 29 41.3


line stmt bran cond sub pod time code
1             # ABSTRACT: Trello.com API Client
2             package API::Trello;
3              
4 1     1   1478 use Data::Object::Class;
  1         24548  
  1         10  
5 1     1   2323 use Data::Object::Signatures;
  1         681625  
  1         12  
6              
7 1         5 use Data::Object::Library qw(
8             Str
9 1     1   9419 );
  1         2  
10              
11             extends 'API::Client';
12              
13             our $VERSION = '0.06'; # VERSION
14              
15             our $DEFAULT_URL = "https://api.trello.com";
16              
17             # ATTRIBUTES
18              
19             has key => (
20             is => 'rw',
21             isa => Str,
22             required => 1,
23             );
24              
25             has token => (
26             is => 'rw',
27             isa => Str,
28             required => 1,
29             );
30              
31             # DEFAULTS
32              
33             has '+casing' => (
34             default => 'camelcase',
35             required => 0,
36             );
37              
38             has '+identifier' => (
39             default => 'API::Trello (Perl)',
40             required => 0,
41             );
42              
43             has '+url' => (
44             default => $DEFAULT_URL,
45             required => 0,
46             );
47              
48             has '+version' => (
49             default => 1,
50             required => 0,
51             );
52              
53             # CONSTRUCTION
54              
55             after BUILD => method {
56              
57             my $key = $self->key;
58             my $token = $self->token;
59             my $version = $self->version;
60             my $url = $self->url;
61              
62             $url->path("/$version");
63             $url->query(key => $key, $token ? (token => $token) : ());
64              
65             return $self;
66              
67             };
68              
69             # METHODS
70              
71 0     0 0   method PREPARE ($ua, $tx, %args) {
  0            
  0            
72              
73 0           my $headers = $tx->req->headers;
74 0           my $url = $tx->req->url;
75              
76             # default headers
77 0           $headers->header('Content-Type' => 'application/json');
78              
79             }
80              
81 0     0 0   method resource (@segments) {
  0            
  0            
82              
83             # build new resource instance
84 0           my $instance = __PACKAGE__->new(
85             debug => $self->debug,
86             fatal => $self->fatal,
87             retries => $self->retries,
88             timeout => $self->timeout,
89             user_agent => $self->user_agent,
90             key => $self->key,
91             token => $self->token,
92             identifier => $self->identifier,
93             version => $self->version,
94             );
95              
96             # resource locator
97 0           my $url = $instance->url;
98              
99             # modify resource locator if possible
100 0           $url->path(join '/', $self->url->path, @segments);
101              
102             # return resource instance
103 0           return $instance;
104              
105             }
106              
107             1;
108              
109             __END__