streams JSON content from a GitHub API
npm install gh-api-stream
Streams paginated JSON from a GitHub API.
``js
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.
`sh`
npm install gh-api-stream
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.
`js
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.

#### 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)pages
- optional authentication token
- (Number)rows
- if specified, will limit the request to no more than N pages. Otherwise streams until we have no remaining pages
- (Boolean|String|Array)true
- if , parses the JSON in rows, emitting a 'data' event for each row. If false or undefined, it will buffer and emit the entire JSONparse
- Strings and Arrays are passed to JSONStream path, e.g. '*.user.login'query
Other options are passed to got, like , 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.
`js``
var api = require('gh-api-stream')
var stream = api.url('https://my-fancy-github.com/repositories')
- gh-api - a non-streamed alternative suitable for the browser
- gh-got - a related library built on got
MIT, see LICENSE.md for details.