Skip to content

Commit

Permalink
Add support for specifying an API key to get around rate limits
Browse files Browse the repository at this point in the history
  • Loading branch information
BrainMaestro committed Jun 29, 2017
1 parent 92fb996 commit 17e74c5
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 8 deletions.
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Package Hub
[![Chrome Web Store](https://img.shields.io/chrome-web-store/v/hnnjnbmjanpeoeapjllonejjgoonilal.svg?style=flat-square)](https://chrome.google.com/webstore/detail/package-hub/hnnjnbmjanpeoeapjllonejjgoonilal)
[![Chrome Web Store](https://img.shields.io/chrome-web-store/d/hnnjnbmjanpeoeapjllonejjgoonilal.svg?style=flat-square)](https://chrome.google.com/webstore/detail/package-hub/hnnjnbmjanpeoeapjllonejjgoonilal)
> An extension for displaying dependencies for different package managers on GitHub
![](screenshot.png)
Expand All @@ -9,7 +10,9 @@
- [x] Composer.
- [x] Pip.
- [x] Cargo.
- [ ] Gem

### Usage
Clicking the extension icon opens a popup where you can provide an API key from libraries.io that you can get from [here](https://libraries.io/api). This API key allows the extension to make bulk requests instead of single ones which improves the experience greatly. Encountering projects with too many dependencies now works correctly. It is a little unpleasant, but getting an API key is worth it.

### Rationale
Why build this? We already have [npmhub](https://github.com/npmhub/npmhub)?
Expand Down
42 changes: 40 additions & 2 deletions src/display.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@
body.appendChild(subHeader(dev, className))
}

var dependencies = []
for (depName in deps) {
dependencies.push({ name: depName, platform: registry })
}

var rows = {}
for (depName in deps) {
var row = document.createElement('tr')
row.className = className
Expand All @@ -60,9 +66,41 @@
addVersion(row, '-')
row.appendChild(document.createElement('td')) // description
body.appendChild(row)

window.getExtraPackageData(registry, depName, addExtraData.bind(row))
rows[depName] = row
}

chrome.storage.local.get('key', function(results) {
if (!results.key) {
for (depName in deps) {
window.getExtraPackageData(
registry,
depName,
addExtraData.bind(rows[depName])
)
}
return
}

window.getAllExtraPackageData(
registry,
dependencies,
results.key,
function(data) {
data.forEach(function(dep) {
var homepage =
dep.repository_url.indexOf('.git') === -1
? data.repository_url
: data.homepage
addExtraData.call(
rows[dep.name],
dep.latest_release_number,
dep.description,
homepage
)
})
}
)
})
}

function subHeader(dev, className) {
Expand Down
2 changes: 1 addition & 1 deletion src/manifest.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "Package Hub",
"version": "0.8.0",
"version": "1.0.0",
"manifest_version": 2,
"description": "Display dependencies for many package managers on GitHub",
"author": "Ezinwa Okpoechi",
Expand Down
2 changes: 1 addition & 1 deletion src/parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,6 @@
window.parse = parse
window.parser = {
json: json,
toml: toml,
toml: toml
}
})()
21 changes: 18 additions & 3 deletions src/registry.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,28 @@

function listener() {
var data = JSON.parse(this.responseText)
var homepage = data.repository_url.indexOf('.git') === -1
? data.repository_url
: data.homepage
var homepage =
data.repository_url.indexOf('.git') === -1
? data.repository_url
: data.homepage

callback(data.latest_release_number, data.description, homepage)
}
}

function getAllExtraPackageData(registry, dependencies, apiKey, callback) {
var url = baseUrl + '/check?api_key=' + apiKey
var xhr = new XMLHttpRequest()
xhr.addEventListener('load', listener)
xhr.open('POST', url)
xhr.setRequestHeader('Content-Type', 'application/json')
xhr.send(JSON.stringify({ projects: dependencies }))

function listener() {
callback(JSON.parse(this.responseText))
}
}

window.getExtraPackageData = getExtraPackageData
window.getAllExtraPackageData = getAllExtraPackageData
})()

0 comments on commit 17e74c5

Please sign in to comment.