gh-api-stream

1.0.3 • Public • Published

gh-api-stream

stable

Streams paginated JSON from a GitHub API.

var api = require('gh-api-stream')
 
// prints all my follower's usernames
api('/users/mattdesl/followers')
  .on('data', function (follower) {
    console.log(follower.login)
  })

For a non-streamed and browser-friendly alternative, see gh-api.

Install

npm install gh-api-stream

Examples

Below is an example of paging through all 'open' issues in a repo. It parses the JSON by row rather than buffering it all at once. Uses ghauth for easy authentication.

var api = require('gh-api-stream')
var ghauth = require('ghauth')
 
ghauth({
  configName: 'my-test', 
  scopes: ['user', 'repo']
}, function (err, data) {
  if (err) throw err
  
  api('/repos/mattdesl/budo/issues', {
    query: {
      state: 'open'
    },
    token: data.token,
    rows: true
  }).on('data', function (issue) {
    console.log(issue.title)
  }).on('end', function () {
    console.log("Done!")
  })
})

See test/example.js for another example.

Usage

NPM

stream = ghApiStream(api, [opt])

Returns an object stream that emits 'data' results from the request.

api is a String for the API like '/repositories' or '/orgs/:owner/repos'.

The options:

  • token (String)
    • optional authentication token
  • pages (Number)
    • if specified, will limit the request to no more than N pages. Otherwise streams until we have no remaining pages
  • rows (Boolean|String|Array)
    • if true, parses the JSON in rows, emitting a 'data' event for each row. If false or undefined, it will buffer and emit the entire JSON
    • Strings and Arrays are passed to JSONStream parse path, e.g. '*.user.login'

Other options are passed to got, like query, method and body. Requests use 'https://api.github.com/' as a URL base.

stream = ghApiStream.url(url, [opt])

You can use this to pass a full URL to your API endpoint. The options are the same as above.

var api = require('gh-api-stream')
var stream = api.url('https://my-fancy-github.com/repositories')

See Also

  • gh-api - a non-streamed alternative suitable for the browser
  • gh-got - a related library built on got

License

MIT, see LICENSE.md for details.

Package Sidebar

Install

npm i gh-api-stream

Weekly Downloads

3

Version

1.0.3

License

MIT

Last publish

Collaborators

  • mattdesl