Skip to content

fayland/perl6-WebService-GitHub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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;

Releases

No releases published

Packages

No packages published

Languages