All Projects → sindresorhus → Gh Got

sindresorhus / Gh Got

Licence: mit
Convenience wrapper for Got to interact with the GitHub API

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Gh Got

Aws Lambda Libreoffice
85 MB LibreOffice to fit inside AWS Lambda compressed with Brotli
Stars: ✭ 145 (-7.05%)
Mutual labels:  npm-package, node-module
Is
Type check values
Stars: ✭ 1,011 (+548.08%)
Mutual labels:  npm-package, node-module
Node Module Boilerplate
Boilerplate to kickstart creating a Node.js module
Stars: ✭ 668 (+328.21%)
Mutual labels:  npm-package, node-module
Node Libcurl
libcurl bindings for Node.js
Stars: ✭ 447 (+186.54%)
Mutual labels:  http-client, node-module
Got
🌐 Human-friendly and powerful HTTP request library for Node.js
Stars: ✭ 10,620 (+6707.69%)
Mutual labels:  http-client, npm-package
Rando.js
The world's easiest, most powerful random function.
Stars: ✭ 659 (+322.44%)
Mutual labels:  npm-package, node-module
Ky
🌳 Tiny & elegant JavaScript HTTP client based on the browser Fetch API
Stars: ✭ 7,047 (+4417.31%)
Mutual labels:  http-client, npm-package
midtrans-node
Unoffficial Midtrans Payment API Client for Node JS | Alternative for Midtrans Official Module | https://midtrans.com
Stars: ✭ 15 (-90.38%)
Mutual labels:  npm-package, node-module
Node Loadbalance
A collection of distilled load balancing engines
Stars: ✭ 79 (-49.36%)
Mutual labels:  npm-package, node-module
String Hash
Get the hash of a string
Stars: ✭ 56 (-64.1%)
Mutual labels:  npm-package, node-module
Figures
Unicode symbols with Windows CMD fallbacks
Stars: ✭ 438 (+180.77%)
Mutual labels:  npm-package, node-module
P Queue
Promise queue with concurrency control
Stars: ✭ 1,863 (+1094.23%)
Mutual labels:  npm-package, node-module
Ky Universal
Use Ky in both Node.js and browsers
Stars: ✭ 421 (+169.87%)
Mutual labels:  http-client, npm-package
Transliterate
Convert Unicode characters to Latin characters using transliteration
Stars: ✭ 152 (-2.56%)
Mutual labels:  npm-package, node-module
request-extra
⚡️ Extremely stable HTTP request module built on top of libcurl with retries, timeouts and callback API
Stars: ✭ 14 (-91.03%)
Mutual labels:  npm-package, http-client
Conf
Simple config handling for your app or module
Stars: ✭ 707 (+353.21%)
Mutual labels:  npm-package, node-module
djb2a
DJB2a non-cryptographic hash function
Stars: ✭ 31 (-80.13%)
Mutual labels:  npm-package, node-module
sdbm
SDBM non-cryptographic hash function
Stars: ✭ 43 (-72.44%)
Mutual labels:  npm-package, node-module
Awesome Node Utils
some useful npm packages for nodejs itself
Stars: ✭ 51 (-67.31%)
Mutual labels:  npm-package, node-module
Fnv1a
FNV-1a non-cryptographic hash function
Stars: ✭ 101 (-35.26%)
Mutual labels:  npm-package, node-module

gh-got

Convenience wrapper for Got to interact with the GitHub API

Unless you're already using Got, you should probably use GitHub's own @octokit/rest.js or @octokit/graphql.js packages instead.

Install

$ npm install gh-got

Usage

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'
})();

API

Same API as got, including options, the stream API, aliases, pagination, etc, but with some additional options below.

Errors are improved by using the custom GitHub error messages. Doesn't apply to the stream API.

gh-got specific options

token

Type: string

GitHub access token.

Can be set globally with the GITHUB_TOKEN environment variable.

prefixUrl

Type: string
Default: https://api.github.com/

To support GitHub Enterprise.

Can be set globally with the GITHUB_ENDPOINT environment variable.

body

Type: object

Can be specified as a plain object and will be serialized as JSON with the appropriate headers set.

Rate limit

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

Authorization for GitHub uses the following logic:

  1. If options.headers.authorization is passed to gh-got, then this will be used as first preference.
  2. If options.token is provided, then the authorization header will be set to token <options.token>.
  3. If options.headers.authorization and options.token are not provided, then the authorization header will be set to token <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'
})();

Pagination

See the Got docs.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].