Skip to content

Commit 17e74c5

Browse files
committed
Add support for specifying an API key to get around rate limits
1 parent 92fb996 commit 17e74c5

File tree

5 files changed

+64
-8
lines changed

5 files changed

+64
-8
lines changed

README.md

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# Package Hub
22
[![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)
3+
[![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)
34
> An extension for displaying dependencies for different package managers on GitHub
45
56
![](screenshot.png)
@@ -9,7 +10,9 @@
910
- [x] Composer.
1011
- [x] Pip.
1112
- [x] Cargo.
12-
- [ ] Gem
13+
14+
### Usage
15+
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.
1316

1417
### Rationale
1518
Why build this? We already have [npmhub](https://github.com/npmhub/npmhub)?

src/display.js

+40-2
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,12 @@
5252
body.appendChild(subHeader(dev, className))
5353
}
5454

55+
var dependencies = []
56+
for (depName in deps) {
57+
dependencies.push({ name: depName, platform: registry })
58+
}
59+
60+
var rows = {}
5561
for (depName in deps) {
5662
var row = document.createElement('tr')
5763
row.className = className
@@ -60,9 +66,41 @@
6066
addVersion(row, '-')
6167
row.appendChild(document.createElement('td')) // description
6268
body.appendChild(row)
63-
64-
window.getExtraPackageData(registry, depName, addExtraData.bind(row))
69+
rows[depName] = row
6570
}
71+
72+
chrome.storage.local.get('key', function(results) {
73+
if (!results.key) {
74+
for (depName in deps) {
75+
window.getExtraPackageData(
76+
registry,
77+
depName,
78+
addExtraData.bind(rows[depName])
79+
)
80+
}
81+
return
82+
}
83+
84+
window.getAllExtraPackageData(
85+
registry,
86+
dependencies,
87+
results.key,
88+
function(data) {
89+
data.forEach(function(dep) {
90+
var homepage =
91+
dep.repository_url.indexOf('.git') === -1
92+
? data.repository_url
93+
: data.homepage
94+
addExtraData.call(
95+
rows[dep.name],
96+
dep.latest_release_number,
97+
dep.description,
98+
homepage
99+
)
100+
})
101+
}
102+
)
103+
})
66104
}
67105

68106
function subHeader(dev, className) {

src/manifest.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "Package Hub",
3-
"version": "0.8.0",
3+
"version": "1.0.0",
44
"manifest_version": 2,
55
"description": "Display dependencies for many package managers on GitHub",
66
"author": "Ezinwa Okpoechi",

src/parser.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,6 @@
5252
window.parse = parse
5353
window.parser = {
5454
json: json,
55-
toml: toml,
55+
toml: toml
5656
}
5757
})()

src/registry.js

+18-3
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,28 @@
1010

1111
function listener() {
1212
var data = JSON.parse(this.responseText)
13-
var homepage = data.repository_url.indexOf('.git') === -1
14-
? data.repository_url
15-
: data.homepage
13+
var homepage =
14+
data.repository_url.indexOf('.git') === -1
15+
? data.repository_url
16+
: data.homepage
1617

1718
callback(data.latest_release_number, data.description, homepage)
1819
}
1920
}
2021

22+
function getAllExtraPackageData(registry, dependencies, apiKey, callback) {
23+
var url = baseUrl + '/check?api_key=' + apiKey
24+
var xhr = new XMLHttpRequest()
25+
xhr.addEventListener('load', listener)
26+
xhr.open('POST', url)
27+
xhr.setRequestHeader('Content-Type', 'application/json')
28+
xhr.send(JSON.stringify({ projects: dependencies }))
29+
30+
function listener() {
31+
callback(JSON.parse(this.responseText))
32+
}
33+
}
34+
2135
window.getExtraPackageData = getExtraPackageData
36+
window.getAllExtraPackageData = getAllExtraPackageData
2237
})()

0 commit comments

Comments
 (0)