Skip to content

Experience-Monks/gh-api-stream

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

streams JSON content from a GitHub API

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published