gh-api-stream
v1.0.3
Published
streams JSON content from a GitHub API
Downloads
4
Maintainers
Readme
gh-api-stream
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
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. Iffalse
or undefined, it will buffer and emit the entire JSON - Strings and Arrays are passed to JSONStream
parse
path, e.g.'*.user.login'
- if
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
License
MIT, see LICENSE.md for details.