File Coverage

blib/lib/API/Stripe.pm
Criterion Covered Total %
statement 9 33 27.2
branch n/a
condition n/a
subroutine 3 6 50.0
pod 0 3 0.0
total 12 42 28.5


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