Popularity
3.3
Declining
Activity
0.0
Stable
5
1
3

Programming language: Crystal
Tags: Third-party APIs    
Latest version: v0.2.1

crystal-github alternatives and similar shards

Based on the "Third-party APIs" category

Do you think we are missing an alternative of crystal-github or a related project?

Add another 'Third-party APIs' Shard

README

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