Skip to content
GitHub API
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples
lib/WebService
logotype
t
xt
.gitignore
.travis.yml
META6.json
Makefile
README.md

README.md

perl6-WebService-GitHub

Build Status

ALPHA STAGE, SUBJECT TO CHANGE

SYNOPSIS

use WebService::GitHub;

my $gh = WebService::GitHub.new(
    access-token => 'my-access-token'
);

my $res = $gh.request('/user');
say $res.data.name;

TODO

Patches welcome

  • Break down modules (Users, Repos, etc.)
  • Handle Errors
  • Auto Pagination
  • API Throttle

Methods

Args

  • endpoint

Useful for GitHub Enterprise. Default to https://api.github.com

  • access-token

Required for Authorized API Request.

  • auth_login & auth_password

Basic Authenticaation. useful to get access-token.

  • per_page

from Doc, default to 30, max to 100.

  • jsonp_callback

JSONP Callback

  • time-zone

UTC by default, Doc

  • with

Builds the object with a particular role

my $gh = WebService::GitHub.new(
    with => ('Debug')
);

Response

  • raw

HTTP::Response instance

  • data

JSON decoded data

  • header(Str $field)

Get header of HTTP Response

  • first-page-url, prev-page-url, next-page-url, last-page-url

Parsed from the Link header, Doc

  • x-ratelimit-limit, x-ratelimit-remaining, x-ratelimit-reset

Rate Limit

Examples

Some of them are, or will be, included in the examples directory.

Public Access without access-token

get user info

my $gh = WebService::GitHub.new;
my $user = $gh.request('/users/fayland').data;
say $user<name>;

search repositories

use WebService::GitHub::Search;

my $search = WebService::GitHub::Search.new;
my $data = $search.repositories({
    :q<perl6>,
    :sort<stars>,
    :order<desc>
}).data;

OAuth

get token from user/login

examples/create_access_token.pl

use WebService::GitHub::OAuth;

my $gh = WebService::GitHub::OAuth.new(
    auth_login => 'username',
    auth_password => 'password'
);

my $auth = $gh.create_authorization({
    :scopes(['user', 'public_repo', 'repo', 'gist']), # just ['public_repo']
    :note<'test purpose'>
}).data;
say $auth<token>;

Gist

create a gist

use WebService::GitHub::Gist;

my $gist = WebService::GitHub::Gist.new(
    access-token => %*ENV<GITHUB_ACCESS_TOKEN>
);

my $data = $gist.create_gist({
    description => 'Test from perl6 WebService::GitHub::Gist',
    public => True,
    files => {
        'test.txt' => {
            content => "Created on " ~ now
        }
    }
}).data;
say $data<url>;

update gist

$data = $gist.update_gist($id, {
    files => {
        "test_another.txt" => {
            content => "Updated on " ~ now
        }
    }
}).data;

delete gist

$res = $gist.delete_gist($id);
say 'Deleted' if $res.is-success;
You can’t perform that action at this time.