• This repository has been archived on 13/Sep/2020
  • Stars
    star
    7
  • Rank 2,294,772 (Top 46 %)
  • Language
    Crystal
  • License
    MIT License
  • Created almost 8 years ago
  • Updated over 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Github API wrapper in Crystal! (work in progress)

crystal-github

Build Status

Github API wrapper in Crystal! (work in progress)

Installation

Add this to your application's shard.yml:

dependencies:
  github:
    github: felipeelias/crystal-github
    version: ~> 0.1.0

Usage

On your application code, require it with:

require "github"

OAuth2 Flow

For now, this client only supports OAuth2 flow to make requests to Github API. To get this working, you need to register a new application and setup the proper attributes.

oauth2 = Github::OAuth2.new(client_id, client_secret, redirect_uri)

With that, you can build the authorization_uri and redirect your users to that

oauth2.authorize_uri
# => https://github.com/login/oauth/authorize...

If the user authorizes your application, you should be redirected back to the redirect_uri that you set up previously, with a code parameter in the URI

# if you're using kemal
code = env.params.query["code"]

token = oauth2.access_token(code)
# => OAuth2::AccessToken is returned

token.access_token
# => "53gdf31mnv..."

You can then use the access_token to authorize users with other API requests.

Users API

NOTE: subject to change

api = Github::UserApi.new(token.access_token)
user = api.user
# => {"login" => ..., "avatar_url" => ...}

Development

Run tests with:

crystal spec

You can test it locally with other apps by adding it to your shards.yml

dependencies:
  github:
    path: path/to/crystal-github

Contributing

  1. Create an issue on Github first, describing the feature or fix you'd like to add.
  2. If nobody is working on the issue, feel free to fork and send a pull-request

Contributors