File Coverage

blib/lib/API/Name.pm
Criterion Covered Total %
statement 9 26 34.6
branch n/a
condition n/a
subroutine 3 5 60.0
pod 0 2 0.0
total 12 33 36.3


line stmt bran cond sub pod time code
1             # ABSTRACT: Name.com API Client
2             package API::Name;
3              
4 1     1   1706 use Data::Object::Class;
  1         52945  
  1         11  
5 1     1   3490 use Data::Object::Signatures;
  1         513902  
  1         12  
6              
7 1         4 use Data::Object::Library qw(
8             Str
9 1     1   9665 );
  1         3  
10              
11             extends 'API::Client';
12              
13             our $VERSION = '0.06'; # VERSION
14              
15             our $DEFAULT_URL = "https://www.name.com";
16              
17             # ATTRIBUTES
18              
19             has user => (
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 '+identifier' => (
34             default => 'API::Name (Perl)',
35             required => 0,
36             );
37              
38             has '+url' => (
39             default => $DEFAULT_URL,
40             required => 0,
41             );
42              
43             has '+version' => (
44             default => 1,
45             required => 0,
46             );
47              
48             # CONSTRUCTION
49              
50             after BUILD => method {
51              
52             my $identifier = $self->identifier;
53             my $version = $self->version;
54             my $agent = $self->user_agent;
55             my $url = $self->url;
56              
57             $agent->transactor->name($identifier);
58              
59             # $url->path("/api/$version");
60             $url->path("/api");
61              
62             return $self;
63              
64             };
65              
66             # METHODS
67              
68 0     0 0   method PREPARE ($ua, $tx, %args) {
  0            
  0            
69              
70 0           my $headers = $tx->req->headers;
71 0           my $url = $tx->req->url;
72              
73 0           my $user = $self->user;
74 0           my $token = $self->token;
75              
76             # default headers
77 0           $headers->header('Content-Type' => 'application/json');
78 0           $headers->header('Api-Username' => $user);
79 0           $headers->header('Api-Token' => $token);
80              
81             }
82              
83 0     0 0   method resource (@segments) {
  0            
  0            
84              
85             # build new resource instance
86 0           my $instance = __PACKAGE__->new(
87             debug => $self->debug,
88             fatal => $self->fatal,
89             retries => $self->retries,
90             timeout => $self->timeout,
91             user_agent => $self->user_agent,
92             identifier => $self->identifier,
93             token => $self->token,
94             user => $self->user,
95             version => $self->version,
96             );
97              
98             # resource locator
99 0           my $url = $instance->url;
100              
101             # modify resource locator if possible
102 0           $url->path(join '/', $self->url->path, @segments);
103              
104             # return resource instance
105 0           return $instance;
106              
107             }
108              
109             1;
110              
111             __END__