File Coverage

blib/lib/API/Stripe.pm
Criterion Covered Total %
statement 18 42 42.8
branch n/a
condition n/a
subroutine 6 9 66.6
pod 0 3 0.0
total 24 54 44.4


line stmt bran cond sub pod time code
1             # ABSTRACT: Stripe.com API Client
2             package API::Stripe;
3              
4 1     1   1614 use namespace::autoclean -except => 'has';
  1         21031  
  1         6  
5              
6 1     1   866 use Data::Object::Class;
  1         15780  
  1         9  
7 1     1   2441 use Data::Object::Class::Syntax;
  1         7088  
  1         5  
8 1     1   982 use Data::Object::Signatures;
  1         234814  
  1         12  
9              
10 1     1   9295 use Data::Object qw(load);
  1         2  
  1         118  
11 1     1   5 use Data::Object::Library qw(Str);
  1         3  
  1         5  
12              
13             extends 'API::Client';
14              
15             our $VERSION = '0.05'; # VERSION
16              
17             our $DEFAULT_URL = "https://api.stripe.com";
18              
19             # ATTRIBUTES
20              
21             has username => rw;
22              
23             # CONSTRAINTS
24              
25             req username => Str;
26              
27             # DEFAULTS
28              
29             def identifier => 'API::Stripe (Perl)';
30             def url => method { load('Mojo::URL')->new($DEFAULT_URL) };
31             def version => 1;
32              
33             # CONSTRUCTION
34              
35 0     0 0   method BUILD () {
  0            
36 0           my $identifier = $self->identifier;
37 0           my $username = $self->username;
38 0           my $version = $self->version;
39 0           my $agent = $self->user_agent;
40 0           my $url = $self->url;
41              
42 0           $agent->transactor->name($identifier);
43              
44 0           $url->path("/v$version");
45 0           $url->userinfo($username);
46              
47 0           return $self;
48             }
49              
50 0     0 0   method PREPARE ($ua, $tx, %args) {
  0            
  0            
51 0           my $headers = $tx->req->headers;
52 0           my $url = $tx->req->url;
53              
54             # default headers
55             # $headers->header('Content-Type' => 'application/json');
56             # $headers->header('Content-Type' => 'application/x-www-form-urlencoded');
57              
58 0           return $self;
59             }
60              
61 0     0 0   method resource (@segments) {
  0            
  0            
62             # build new resource instance
63 0           my $instance = __PACKAGE__->new(
64             debug => $self->debug,
65             fatal => $self->fatal,
66             retries => $self->retries,
67             timeout => $self->timeout,
68             user_agent => $self->user_agent,
69             identifier => $self->identifier,
70             username => $self->username,
71             version => $self->version,
72             );
73              
74             # resource locator
75 0           my $url = $instance->url;
76              
77             # modify resource locator if possible
78 0           $url->path(join '/', $self->url->path, @segments);
79              
80             # return resource instance
81 0           return $instance;
82             }
83              
84             1;
85              
86             __END__