~ubuntu-branches/ubuntu/wily/libpithub-perl/wily

« back to all changes in this revision

Viewing changes to lib/Pithub/Base.pm

  • Committer: Package Import Robot
  • Author(s): Dominique Dumont, gregor herrmann, Dominique Dumont
  • Date: 2014-04-25 22:05:01 UTC
  • mfrom: (1.1.6)
  • Revision ID: package-import@ubuntu.com-20140425220501-df979lds6kwid2nr
Tags: 0.01024-1
[ gregor herrmann ]
* Strip trailing slash from metacpan URLs.

[ Dominique Dumont ]
* Imported Upstream version 0.01024
  - Add Pithub::Repos::Releases::Assets (Johannes Plunien)
  - Add Pithub::Repos::Releases (Johannes Plunien)
* copyright: updated years

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
package Pithub::Base;
2
 
{
3
 
  $Pithub::Base::VERSION = '0.01021';
4
 
}
5
 
 
 
2
$Pithub::Base::VERSION = '0.01024';
6
3
# ABSTRACT: Github v3 base class for all Pithub modules
7
4
 
8
5
use Moo;
122
119
    qr{^DELETE /repos/[^/]+/[^/]+/labels/.*?$},
123
120
    qr{^DELETE /repos/[^/]+/[^/]+/milestones/.*?$},
124
121
    qr{^DELETE /repos/[^/]+/[^/]+/pulls/comments/.*?$},
 
122
    qr{^DELETE /repos/[^/]+/[^/]+/releases/.*?$},
 
123
    qr{^DELETE /repos/[^/]+/[^/]+/releases/assets/.*?$},
125
124
    qr{^DELETE /teams/.*?$},
126
125
    qr{^DELETE /teams/[^/]+/members/.*?$},
127
126
    qr{^DELETE /teams/[^/]+/repos/.*?$},
165
164
    qr{^PATCH /repos/[^/]+/[^/]+/labels/.*?$},
166
165
    qr{^PATCH /repos/[^/]+/[^/]+/milestones/.*?$},
167
166
    qr{^PATCH /repos/[^/]+/[^/]+/pulls/.*?$},
 
167
    qr{^PATCH /repos/[^/]+/[^/]+/releases/.*?$},
168
168
    qr{^PATCH /repos/[^/]+/[^/]+/pulls/comments/.*?$},
169
169
    qr{^PATCH /teams/.*?$},
170
170
    qr{^PATCH /user/keys/.*?$},
171
171
    qr{^PATCH /user/repos/.*?$},
 
172
    qr{^POST /repos/[^/]+/[^/]+/releases/[^/]+/assets.*?$},
172
173
    qr{^POST /gists/[^/]+/comments$},
173
174
    qr{^POST /orgs/[^/]+/repos$},
174
175
    qr{^POST /orgs/[^/]+/teams$},
189
190
    qr{^POST /repos/[^/]+/[^/]+/labels$},
190
191
    qr{^POST /repos/[^/]+/[^/]+/milestones$},
191
192
    qr{^POST /repos/[^/]+/[^/]+/pulls$},
 
193
    qr{^POST /repos/[^/]+/[^/]+/releases$},
192
194
    qr{^POST /repos/[^/]+/[^/]+/pulls/[^/]+/comments$},
193
195
    qr{^PUT /gists/[^/]+/star$},
194
196
    qr{^PUT /orgs/[^/]+/public_members/.*?$},
206
208
sub request {
207
209
    my ( $self, %args ) = @_;
208
210
 
209
 
    my $method = delete $args{method} || croak 'Missing mandatory key in parameters: method';
210
 
    my $path   = delete $args{path}   || croak 'Missing mandatory key in parameters: path';
211
 
    my $data   = delete $args{data};
 
211
    my $method  = delete $args{method} || croak 'Missing mandatory key in parameters: method';
 
212
    my $path    = delete $args{path}   || croak 'Missing mandatory key in parameters: path';
 
213
    my $data    = delete $args{data};
212
214
    my $options = delete $args{options};
213
215
    my $params  = delete $args{params};
214
216
 
216
218
 
217
219
    my $uri = $self->_uri_for($path);
218
220
 
 
221
    if (my $host = delete $args{host}) {
 
222
        $uri->host($host);
 
223
    }
 
224
 
 
225
    if (my $query = delete $args{query}) {
 
226
        $uri->query_form(%$query);
 
227
    }
 
228
 
219
229
    my $request = $self->_request_for( $method, $uri, $data );
220
230
 
 
231
    if (my $headers = delete $args{headers}) {
 
232
        foreach my $header (keys %$headers) {
 
233
            $request->header($header, $headers->{$header});
 
234
        }
 
235
    }
 
236
 
221
237
    if ( $self->_token_required( $method, $path ) && !$self->has_token($request) ) {
222
238
        croak sprintf "Access token required for: %s %s (%s)", $method, $path, $uri;
223
239
    }
224
240
 
225
 
 
226
241
    if ($options) {
227
242
        croak 'The key options must be a hashref' unless ref $options eq 'HASH';
228
243
        croak 'The key prepare_request in the options hashref must be a coderef' if $options->{prepare_request} && ref $options->{prepare_request} ne 'CODE';
316
331
    my $request = HTTP::Request->new( $method, $uri, $headers );
317
332
 
318
333
    if ($data) {
319
 
        my $json = $self->_json->encode($data);
320
 
        $request->content($json);
 
334
        $data = $self->_json->encode($data) if ref $data;
 
335
        $request->content($data);
321
336
    }
322
337
 
323
338
    $request->header( 'Content-Length' => length $request->content );
383
398
 
384
399
=head1 VERSION
385
400
 
386
 
version 0.01021
 
401
version 0.01024
387
402
 
388
403
=head1 DESCRIPTION
389
404