App-gh
view release on metacpan or search on metacpan
lib/App/gh/API.pm view on Meta::CPAN
package App::gh::API;
use warnings;
use strict;
use Carp ();
use LWP::UserAgent;
use URI;
use JSON;
use App::gh::Utils;
use Try::Tiny;
use Net::GitHub;
sub new_ua {
my $class = shift;
my $ua = LWP::UserAgent->new; # TODO: make this switchable. better client ? Furl ?
$ua->timeout(10);
$ua->env_proxy;
return $ua;
}
sub request {
my ( $class, $verb, $query , %args ) = @_;
die('v2 API is deprecated from github');
}
sub search {
my ( $class, $query, %args ) = @_;
return $class->request(GET => qq{repos/search/$query}, %args);
}
sub fork {
my ( $class, $user, $repo) = @_;
Carp::croak("Missing mandatory parameter: user") unless defined $user;
my $gh_id = App::gh->config->github_id;
my $gh_password = App::gh->config->github_password;
my $gh = Net::GitHub->new(
version => 3,
login => App::gh->config->github_id,
pass => App::gh->config->github_password,
);
my $repos = $gh->repos;
$repos->set_default_user_repo( $user, $repo );
return $repos->create_fork;
}
sub repo_network {
my ( $class, $user, $repo ) = @_;
my $ret = $class->request(GET => qq(repos/show/$user/$repo/network));
return $ret->{network};
}
sub repo_info {
my ( $class, $user, $repo ) = @_;
my $ret = $class->request(GET => qq{repos/show/$user/$repo});
return $ret->{repository} if $ret;
}
sub repo_create {
my ($class,%args) = @_;
my $ret = $class->request(POST => qq{repos/create} , %args);
return $ret->{repository} if $ret;
}
sub user_info {
my ($class,$user,$page) = @_;
$page ||= 1;
my $ret = $class->request(GET => qq{repos/show/$user?page=$page});
( run in 1.298 second using v1.01-cache-2.11-cpan-39bf76dae61 )