Skip to content

Instantly share code, notes, and snippets.

@j-hannes
Last active March 23, 2016 10:03
Show Gist options
  • Save j-hannes/e877e725751846e00074 to your computer and use it in GitHub Desktop.
Save j-hannes/e877e725751846e00074 to your computer and use it in GitHub Desktop.
Ask github for logins of most recent repositories
const fetch = require('isomorphic-fetch')
const async = require('async')
const range = require('ramda').range
const url = 'https://api.github.com/search/repositories?q=+language:javascript'
const listOccurences = names => {
const occurences = {}
names.forEach(name => {
if (name in occurences) {
occurences[name] = occurences[name] + 1
} else {
occurences[name] = 1
}
})
return occurences
}
const fetchPage = page => (
new Promise((resolve, reject) => {
fetch(`${url}&page=${page}`)
.then(result => result.json())
.then(result => {
if (result.items) {
return result.items.map(item => item.owner.login)
} else {
reject(result)
}
})
.then(resolve)
.catch(reject)
})
)
const pages = range(1, 32)
const requestPromises = pages.map(fetchPage)
Promise.all(requestPromises)
.then(results => {
const merged = [].concat.apply([], results)
const occurences = listOccurences(merged)
console.log(JSON.stringify(occurences, null, 2))
})
.catch(error => {
console.log(error)
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment