NAME
Net::GitHub::V3 - Github API v3
SYNOPSIS
Prefer:
use Net::GitHub;
my $gh = Net::GitHub->new(
version => 3,
login => 'fayland', pass => 'mypass',
# or
# access_token => $oauth_token
);
Or:
use Net::GitHub::V3;
my $gh = Net::GitHub::V3->new(
login => 'fayland', pass => 'mypass',
# or
# access_token => $oauth_token
);
DESCRIPTION
http://developer.github.com/v3/
ATTRIBUTES
Authentication
There are two ways to authenticate through GitHub API v3:
- login/pass
-
my $gh = Net::GitHub::V3->new( login => $ENV{GITHUB_USER}, pass => $ENV{GITHUB_PASS} );
- access_token
-
my $gh = Net::GitHub->new( access_token => $ENV{GITHUB_ACCESS_TOKEN} );
raw_response
my $gh = Net::GitHub->new(
# login/pass or access_token
raw_response => 1
);
return raw HTTP::Response object
raw_string
my $gh = Net::GitHub->new(
# login/pass or access_token
raw_string => 1
);
return HTTP::Response response content as string
api_throttle
my $gh = Net::GitHub->new(
# login/pass or access_token
api_throttle => 0
);
To disable call rate limiting (e.g. if your account is whitelisted), set api_throttle to 0.
RaiseError
By default, error responses are propagated to the user as they are received from the API. By switching RaiseError on you can make the be turned into exceptions instead, so that you don't have to check for error response after every call.
next_url, last_url, prev_url, first_url, per_page
Any methods which return multiple results may be paginated. After performing a query you should check to see if there are more results. These attributes will be reset for each query.
The predicates to check these attributes are has_next_page
, has_last_page
, has_prev_page
and has_first_page
.
per_page
defaults to 100. It will be applied to GET urls no matter it supports or not.
See Github's documentation: http://developer.github.com/v3/#pagination
my @issues = $gh->issue->repos_issues;
while ($gh->issue->has_next_page) {
push @issues, $gh->issue->query($gh->issue->next_url);
## OR ##
push @issues, $gh->issue->next_page;
}
ua
To set the proxy for ua, you can do something like following
$gh->ua->proxy('https', 'socks://127.0.0.1:9050');
$gh->ua is an instance of LWP::UserAgent
METHODS
query($method, $url, $data)
my $data = $gh->query('/user');
$gh->query('PATCH', '/user', $data);
$gh->query('DELETE', '/user/emails', [ 'myemail@somewhere.com' ]);
query API directly
next_page
When the results have been paginated, next_page
is sugar for the common case of iterating through all the pages in order. It simply calls query
with the next_url
.
set_default_user_repo
$gh->set_default_user_repo('fayland', 'perl-net-github'); # take effects for all $gh->
$gh->repos->set_default_user_repo('fayland', 'perl-net-github'); # take effects on $gh->repos
To ease the keyboard, we provided two ways to call any method which starts with :user/:repo
1. SET user/repos before call methods below
$gh->set_default_user_repo('fayland', 'perl-net-github');
my @contributors = $gh->repos->contributors;
2. If it is just for once, we can pass :user, :repo before any arguments
my @contributors = $repos->contributors($user, $repo);
MODULES
user
my $user = $gh->user->show('nothingmuch');
$gh->user->update( bio => 'Just Another Perl Programmer' );
repos
my @repos = $gh->repos->list;
my $rp = $gh->repos->create( {
"name" => "Hello-World",
"description" => "This is your first repo",
"homepage" => "https://github.com"
} );
issue
my @issues = $gh->issue->issues();
my $issue = $gh->issue->issue($issue_id);
pull_request
my @pulls = $gh->pull_request->pulls();
org
my @orgs = $gh->org->orgs;
git_data
gist
oauth
event
search
SEE ALSO
AUTHOR & COPYRIGHT & LICENSE
Refer Net::GitHub