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 )