Convenience wrapper for
got
to interact with the GitHub API
$ npm install gh-got
Instead of:
const got = require('got');
const token = 'foo';
(async () => {
const {body} = await got('https://api.github.com/users/sindresorhus', {
json: true,
headers: {
'accept': 'application/vnd.github.v3+json',
'authorization': `token ${token}`
}
});
console.log(body.login);
//=> 'sindresorhus'
})();
You can do:
const ghGot = require('gh-got');
(async () => {
const {body} = await ghGot('users/sindresorhus', {token: 'foo'});
console.log(body.login);
//=> 'sindresorhus'
})();
Or:
const ghGot = require('gh-got');
(async () => {
const {body} = await ghGot('https://api.github.com/users/sindresorhus', {token: 'foo'});
console.log(body.login);
//=> 'sindresorhus'
})();
Same API as got
, including the stream API and aliases, but with some additional options below.
Errors are improved by using the custom GitHub error messages. Doesn't apply to the stream API.
Type: string
GitHub access token.
Can be set globally with the GITHUB_TOKEN
environment variable.
Type: string
Default: https://api.github.com/
To support GitHub Enterprise.
Can be set globally with the GITHUB_ENDPOINT
environment variable.
Type: Object
Can be specified as a plain object and will be serialized as JSON with the appropriate headers set.
Responses and errors have a .rateLimit
property with info about the current rate limit. (This is not yet implemented for the stream API)
const ghGot = require('gh-got');
(async () => {
const {rateLimit} = await ghGot('users/sindresorhus');
console.log(rateLimit);
//=> {limit: 5000, remaining: 4899, reset: [Date 2018-12-31T20:45:20.000Z]}
})();
Authorization for GitHub uses the following logic:
- If
options.headers.authorization
is passed togh-got
, then this will be used as first preference. - If
options.token
is provided, then theauthorization
header will be set totoken <options.token>
. - If
options.headers.authorization
andoptions.token
are not provided, then theauthorization
header will be set totoken <process.env.GITHUB_TOKEN>
In most cases, this means you can simply set GITHUB_TOKEN
, but it also allows it to be overridden by setting options.token
or options.headers.authorization
explicitly. For example, if authenticating as a GitHub App, you could do the following:
const ghGot = require(`gh-got`);
(async () => {
const options = {
headers: {
authorization: `Bearer ${jwt}`
}
};
const {body} = await ghGot('app', options);
console.log(body.name);
//=> 'MyApp'
})();
MIT © Sindre Sorhus