-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathharvestFromLibrariesIO.js
94 lines (84 loc) · 2.56 KB
/
harvestFromLibrariesIO.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
const request = require('superagent')
const api_key = '<KEY>'
go()
async function go() {
for (let i = 59; i <= 100; i++) {
console.log('---------------------------')
console.log(i)
console.log('---------------------------')
const response = await request
.get('https://libraries.io/api/search')
.query({
sort: 'rank',
api_key,
per_page: 100,
page: i
//platforms: 'NPM'
})
const items = []
for (let package of response.body) {
const item = {
tool: 'package'
}
if (!package.latest_stable_release) continue
switch (package.platform) {
case 'NPM':
item.coordinates = `npm/npmjs/${
package.name.indexOf('/') > 0 ? package.name : `-/${package.name}`
}/${package.latest_stable_release.number}`
break
case 'Rubygems':
item.coordinates = `gem/rubygems/-/${package.name}/${
package.latest_stable_release.number
}`
break
case 'NuGet':
item.coordinates = `nuget/nuget/-/${package.name}/${
package.latest_stable_release.number
}`
break
case 'Maven':
item.coordinates = `maven/mavencentral/${
package.name.split(':')[0]
}/${package.name.split(':')[1]}/${
package.latest_stable_release.number
}`
break
case 'CocoaPods':
item.coordinates = `pod/cocoapods/-/${package.name}/${
package.latest_stable_release.number
}`
}
if (item.coordinates) {
items.push(item)
}
}
console.log(response.body.length)
try {
await sendHarvestRequest(items)
} catch (e) {
var x = e
}
}
}
async function sendHarvestRequest(coordinates) {
for (let x of coordinates) {
const response = await request
.post(
'https://clearlydefined-crawler-prod.azurewebsites.net/requests/later'
)
.set('X-token', '<TOKEN>')
.send({
type: 'component',
url: `cd:/${x.coordinates}`
})
console.log(response.status)
}
//'{"type":"component", "url":"cd:/nuget/nuget/-/Newtonsoft.Json/12.0.1"}' -H "Content-Type: application/json" -H "X-token: a7aaf99c1f383e63046faba6f31343eeb444d9569fe800861e76041c" -X POST https://clearlydefined-crawler-prod.azurewebsites.net/requests/later
}
async function sendHarvestRequestThroughService(payload) {
const response = await request
.post('https://api.clearlydefined.io/harvest')
.send(payload)
console.log(response.status)
}