Skip to content

Instantly share code, notes, and snippets.

@ttchengcheng
Last active November 10, 2017 06:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ttchengcheng/005337aabb9154b35759566d0ced241b to your computer and use it in GitHub Desktop.
Save ttchengcheng/005337aabb9154b35759566d0ced241b to your computer and use it in GitHub Desktop.
Use octonode to get all starred repositories of your github
// https://github.com/pksunkara/octonode
const github = require('octonode')
// get one page of starred repos
// starred() is a Pagination API: https://github.com/pksunkara/octonode#pagination
function _getPageStarred (ghme, page) {
return new Promise(function (resolve, reject) {
ghme.starred(page, (err, repoList) => {
err ? reject(err) : resolve(repoList)
})
})
}
// get record page by page until no more records
async function getStarred (ghme, onErr, onPage, onDone) {
let starred = []
for (let i = 0; ; i++) {
try {
let repos = await _getPageStarred(ghme, i)
if (!repos || !repos.length) { break }
onPage && onPage(repos)
starred = [...starred, ...repos]
} catch (err) {
onErr && onErr(err); return
}
}
onDone && onDone(starred)
}
var client = github.client({
username: 'username', // your user name
password: 'password' // your password
})
// get info of your account
client.get('/user', {}, function (err, status, body, headers) {
err ? console.error(err) : console.log(body) // json object
})
// usage of getStarred
getStarred(client.me(),
(err) => { console.error(err) }, // error handler
(repos) => { console.log(repos) }, // page data handler
(allRepos) => { console.log(allRepos) } // full list data handler
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment