Github.js provides a minimal higher-level wrapper around Github's API. It was concieved in the context of Prose, a content editor for GitHub.
Github.js is available from npm
or unpkg.
npm install github-api
<!-- just github-api source (5.3kb) -->
<script src="https://unpkg.com/github-api/dist/GitHub.min.js"></script>
<!-- standalone (20.3kb) -->
<script src="https://unpkg.com/github-api/dist/GitHub.bundle.min.js"></script>
## Compatibility Github.js is tested on Node:
- 6.x
- 5.x
- 4.x
- 0.12
The team behind Github.js has created a whole organization, called GitHub Tools, dedicated to GitHub and its API. In the near future this repository could be moved under the GitHub Tools organization as well. In the meantime, we recommend you to take a look at other projects of the organization.
/*
Data can be retrieved from the API either using callbacks (as in versions < 1.0)
or using a new promise-based API. For now the promise-based API just returns the
raw HTTP request promise; this might change in the next version.
*/
import GitHub from 'github-api';
// unauthenticated client
const gh = new GitHub();
let gist = gh.getGist(); // not a gist yet
gist.create({
public: true,
description: 'My first gist',
files: {
"file1.txt": {
content: "Aren't gists great!"
}
}
}).then(function({data}) {
// Promises!
let gistJson = data;
gist.read(function(err, gist, xhr) {
// if no error occurred then err == null
// gistJson === httpResponse.data
// xhr === httpResponse
});
});
import GitHub from 'github-api';
// basic auth
const gh = new GitHub({
username: 'FOO',
password: 'NotFoo'
});
const me = gh.getUser();
me.listNotifications(function(err, notifications) {
// do some stuff
});
const clayreimann = gh.getUser('clayreimann');
clayreimann.listStarredRepos()
.then(function({data: reposJson}) {
// do stuff with reposJson
});
var GitHub = require('github-api');
// token auth
var gh = new GitHub({
token: 'MY_OAUTH_TOKEN'
});
var yahoo = gh.getOrganization('yahoo');
yahoo.listRepos(function(err, repos) {
// look at all the repos!
})
<<<<<<< HEAD To read all the issues of a given repository
issues.list(options, function(err, issues) {});
var search = github.getSearch(query);
Suppose you want to search for popular Tetris repositories written in Assembly. Your query might look like this:
var search = github.getSearch("tetris+language:assembly&sort=stars&order=desc");
search.repositories(options, function (err, repositories) {});
Suppose you want to find the definition of the addClass function inside jQuery. Your query would look something like this:
var search = github.getSearch("addClass+in:file+language:js+repo:jquery/jquery");
search.code(options, function (err, codes) {});
Let’s say you want to find the oldest unresolved Python bugs on Windows. Your query might look something like this:
var search = github.getSearch("windows+label:bug+language:python+state:open&sort=created&order=asc");
search.issues(options, function (err, issues) {});
Imagine you’re looking for a list of popular users. You might try out this query:
var search = github.getSearch("tom+repos:%3E42+followers:%3E1000");
search.users(options, function (err, users) {});
Here, we’re looking at users with the name Tom. We’re only interested in those with more than 42 repositories, and only if they have over 1,000 followers.
##Setup
Github.js has the following dependency:
- btoa (included in modern browsers, an npm module is included in package.json for node)
Create and delete repositories Repos - getCommit
Paging (introduced at tail end of 0.8.X, note: different callbacks for success & errors now)
Fixes and tweaks, simpler auth, CI tests, node.js support, Raw+JSON, UTF8, plus: Users - follow, unfollow, get info, notifications Gists - create Issues - get Repos - createRepo, deleteRepo, createBranch, star, unstar, isStarred, getCommits, listTags, listPulls, getPull, compare Hooks - listHooks, getHook, createHook, editHook, deleteHook
Switched to a native request
implementation (thanks @mattpass). Adds support for GitHub gists, forks and pull requests.
Adds support for organizations and fixes an encoding issue.
Smart caching of latest commit sha.
Added support for OAuth.
Support for Moving and removing files.
Consider commit messages.
refs/remotes/michael/master