GitHub API
Perl6 Perl
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples rename WebServices to WebService Oct 9, 2016
lib/WebService
logotype
t
xt
.travis.yml
META6.json
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, Issues etc.)
  • Errors Handle
  • 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

does the roles

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 Link header, Doc

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

Rate Limit

Examples

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;