/examples/direct_spore_plainauth.pl
Perl | 105 lines | 78 code | 15 blank | 12 comment | 8 complexity | 80286202a16901becc8df1c9ca74e4fa MD5 | raw file
- #!/usr/bin/perl -w
- #
- # Example directly using spore specs. No auth.
- #
- use strict;
- use warnings;
- use feature ('say');
- use Net::HTTP::Spore;
- use Try::Tiny;
- use Data::Dumper;
- my $USER = 'Mekk';
- my $PASS = '***';
- die "It does not work, bb does not handle plain auth\n";
- sub display_repos_reply {
- my $repos = shift;
- # print Dumper($repos);
- say "next:", $repos->{next} if $repos->{next};
- say "size:", $repos->{size};
- say "page:", $repos->{page};
- foreach my $val (@{$repos->{values}}) {
- say "Repo ", $val->{name}, "(scm: $val->{scm}, language: $val->{language}, owner: $val->{owner}->{username}, size: $val->{size}, private: $val->{is_private})";
- # say Dumper($val->{owner}); username, uuid, display_name, links
- # description
- # has_wiki, has_issues, fork_policy
- # updated_on, created_on
- say " full_name: ", $val->{full_name};
- say " fork_parent: ", $val->{parent} if $val->{parent};
- print " clone: "; #, Dumper($val->{links}->{clone});
- foreach my $link (@{$val->{links}->{clone}}) {
- print "[$link->{name}] $link->{href} ";
- }
- print "\n";
- }
- }
- try {
- my $client = Net::HTTP::Spore->new_from_spec(
- '../share/bitbucket-spore.json',
- # trace=>1, # Or SPORE_TRACE=1 in environment
- );
- # $client->enable()
- $client->enable('Format::JSON');
- $client->enable('Redirection', max_redirect => 3);
- $client->enable('Auth::Basic', username => $USER, password => $PASS);
- $client->enable(sub {
- my $self = shift;
- my $request = shift;
- # say "Issuing request ", ref($request);
- say "* Issuing request to: ", $request->uri;
- $self->response_cb(sub {
- my $res = shift;
- say "* Obtained response, status: ", $res->status, ", content type: ", $res->content_type, ", size: ", $res->content_length;
- });
- });
- say "*** USER INFO ***";
- my $result;
- $result = $client->user();
- my $user = $result->body;
- say Dumper($user);
- say "*** OWNED REPOSITORIES ***";
- $result = $client->repositories();
- my $repos = $result->body;
- display_repos_reply($repos);
- $result = $client->repositories(page=>"2");
- $repos = $result->body;
- display_repos_reply($repos);
- while( $repos->{next} ) {
- if($repos->{next} =~ /page=(\d+)/) {
- last if $1 > 10;
- $result = $client->repositories(page=>$1);
- $repos = $result->body;
- display_repos_reply($repos);
- } else {
- last;
- }
- }
- }
- catch {
- say "Unexpected error caught [" . ref($_) . "]: $_";
- if(ref($_) eq 'Net::HTTP::Spore::Response') {
- my $body = $_->body;
- my $error = $body;
- if(ref($error)) {
- $error = $error->{error};
- }
- if(ref($error)) {
- $error = $error->{message};
- }
- say $error;
- }
- };