0.0
No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
Send GraphQL API Requests to Github
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.15
~> 12.0
~> 4.2
~> 0.49
~> 3.2

Runtime

~> 2.1
 Project Readme

Github GraphQL API Library

Ruby Library for Making Queries to the Github GraphQL API

Travis CI Code Climate Gem Version Gem

Installation

$ gem install github-graphql

Will fetch the json gem as a runtime dependency.

Developers

First, fork this repo on github, then:

$ git clone https://github.com/#{user}/github-graphql

To fetch development dependencies:

$ bundle install

This will download rake, bundler, rubocop, test-unit, and github_changelog_generator.

Usage

#!/usr/bin/env ruby

require "github/graphql"

# Github API Key
oauth_token = "ANLEOU1234LKFDS"

# GraphQL Query
query = 'query { user (login: "karagenit") { name } }'

Github.query(oauth_token, query_string)
#=> {"data"=>{"user"=>{"name"=>"Caleb Smith"}}}

Tip: For clarity, you can use Inline Literals for the query string:

query = %{
    query { 
        user (login: "karagenit") {
            name
        }
    }
}

More on Ruby Escape Strings

GraphQL Variables

To pass variables to your query:

query = %{
    query ($username:String!) {
        user(login: $username) {
            name
        }
    }
}

variables = { username: "karagenit" }

Github.query(oauth_token, query_string, variables_hash)
#=> {"data"=>{"user"=>{"name"=>"Caleb Smith"}}}

The Github::GraphQL Object

Alternatively, you can construct a GraphQL object to make repeated queries:

#!/usr/bin/env ruby

require "github/graphql"

api = Github::GraphQL.new(oauth_token, query_string)

api = Github::GraphQL.new(oauth_token, query_string, variables_hash)

api.query
#=> {"data"=>{"user"=>{"name"=>"Caleb Smith"}}}

Optionally, you can re-set either the key or the query/variables later on:

api.token(token)

api.payload(query_string)

api.payload(query_string, variables_hash)

Using Basic Authentication

Sometimes you'll want to connect to the API via Basic Authentication (i.e. username & password) instead of with an OAuth token, however the Github GraphQL API doesn't currently support this. It's fairly simple to do using the octokit gem:

#!/usr/bin/env ruby

require "octokit"
require "github/graphql"

octoclient = Octokit::Client.new(:login => username, :password => password)
auth = octoclient.create_authorization(:scopes => ["repo"], :note => "Test Script")

# Use this to connect to the GraphQL API
token = auth.attrs[:token]

# Don't forget to either store or delete the token, so your script can be run again!
IO.write('oauth.token', token)
octoclient.delete_authorization(auth.attrs[:id])