App-BitBucketCli
view release on metacpan or search on metacpan
lib/App/BitBucketCli/Core.pm view on Meta::CPAN
package App::BitBucketCli::Core;
# Created on: 2017-04-24 08:14:30
# Create by: Ivan Wills
# $Id$
# $Revision$, $HeadURL$, $Date$
# $Revision$, $Source$, $Date$
use Moo;
use warnings;
use Carp;
use WWW::Mechanize;
use JSON::XS qw/decode_json encode_json/;
use Data::Dumper qw/Dumper/;
use English qw/ -no_match_vars /;
use App::BitBucketCli::Project;
use App::BitBucketCli::Repository;
use App::BitBucketCli::Branch;
use App::BitBucketCli::PullRequest;
use YAML::Syck qw/Dump/;
our $VERSION = 0.009;
has url => (
is => 'rw',
builder => '_url',
lazy => 1,
);
has host => (
is => 'rw',
required => 1,
);
has [qw/user pass/] => (
is => 'rw',
);
has mech => (
is => 'rw',
default => sub { WWW::Mechanize->new },
);
has opt => (
is => 'rw',
default => sub {{}},
);
has max => (
is => 'rw',
default => 100,
);
sub projects {
my ($self) = @_;
my @projects;
my $last_page = 0;
my $next_page_start = 0;
my $limit = 30;
while ( ! $last_page ) {
my $json;
eval {
$json = $self->_get($self->url . "/projects?limit=$limit&start=$next_page_start");
1;
} || do {
warn "Couldn't list repositories: $@\n";
return [];
};
push @projects, @{ $json->{values} };
$last_page = $json->{isLastPage};
$next_page_start = $json->{nextPageStart};
}
return map {App::BitBucketCli::Project->new($_)} @projects;
}
sub repositories {
my ($self, $project) = @_;
( run in 0.861 second using v1.01-cache-2.11-cpan-39bf76dae61 )