/examples/direct_spore_anonymous.pl
Perl | 93 lines | 67 code | 13 blank | 13 comment | 7 complexity | 477f42e1c1e754cb20278dc43bd8e495 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';
- 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('Format::JSON');
- $client->enable('Redirection', max_redirect => 3);
- # $client->api_useragent->max_redirect(5);
- # $client->enable('UserAgent', useragent => 'Mozilla/5.0 (X11; Linux x86_64; rv:2.0b4) Gecko/20100818 Firefox/4.0b4');
- $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 "*** PUBLIC REPOSITORIES ***";
- my $result;
- $result = $client->public_repositories(owner=>$USER);
- my $public_repos = $result->body;
- display_repos_reply($public_repos);
- $result = $client->public_repositories(owner=>$USER, page=>"2");
- $public_repos = $result->body;
- display_repos_reply($public_repos);
- while( $public_repos->{next} ) {
- if($public_repos->{next} =~ /page=(\d+)/) {
- last if $1 > 10;
- $result = $client->public_repositories(owner=>$USER, page=>$1);
- $public_repos = $result->body;
- display_repos_reply($public_repos);
- } else {
- last;
- }
- }
- }
- catch {
- say "Unexpected error caught [" . ref($_) . "]: $_";
- if(ref($_) eq 'Net::HTTP::Spore::Response') {
- my $error = $_->body->{error};
- if(ref($error)) {
- $error = $error->{message};
- }
- say $error;
- }
- };