Skip to content
Github API wrapper in Crystal! (work in progress)
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.
spec
src
.gitignore
.travis.yml
CHANGELOG.md
LICENSE
README.md
shard.yml

README.md

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

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.