File Coverage

blib/lib/API/Stripe.pm
Criterion Covered Total %
statement 9 38 23.6
branch 0 2 0.0
condition n/a
subroutine 3 6 50.0
pod 0 3 0.0
total 12 49 24.4


line stmt bran cond sub pod time code
1             # ABSTRACT: Stripe.com API Client
2             package API::Stripe;
3              
4 1     1   1528 use Data::Object::Class;
  1         24628  
  1         10  
5 1     1   2297 use Data::Object::Signatures;
  1         651135  
  1         12  
6              
7 1         5 use Data::Object::Library qw(
8             Str
9 1     1   9179 );
  1         2  
10              
11             extends 'API::Client';
12              
13             our $VERSION = '0.07'; # 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 0           my $method = $tx->req->method;
66 0           my $content = 'application/json';
67              
68 0 0         if (grep lc $method eq $_, qw(delete patch post put)) {
69              
70 0           $content = 'application/x-www-form-urlencoded';
71              
72             }
73              
74             # default headers
75 0           $headers->header('Content-Type' => $content);
76              
77 0           return $self;
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             identifier => $self->identifier,
91             username => $self->username,
92             version => $self->version,
93             );
94              
95             # resource locator
96 0           my $url = $instance->url;
97              
98             # modify resource locator if possible
99 0           $url->path(join '/', $self->url->path, @segments);
100              
101             # return resource instance
102 0           return $instance;
103              
104             }
105              
106             1;
107              
108             __END__