-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathloadStaticDataToFiles.js
More file actions
41 lines (33 loc) · 1010 Bytes
/
loadStaticDataToFiles.js
File metadata and controls
41 lines (33 loc) · 1010 Bytes
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
const axios = require("axios")
const parse = require("parse-link-header")
const fs = require("fs")
const get = require("lodash/get")
var pad = require("pad-number")
const types = ["lessons", "series", "podcasts"]
async function getAllResources(url, type) {
const result = await axios.get(url)
const resources = result.data.map(resource => {
return { ...resource, id: `${type}-${pad(resource.id, 20)}` }
})
const nextUrl = get(parse(result.headers.link), "next.url")
if (nextUrl) {
console.log(`fetching more ${type} ${resources.length}`)
const moreResources = await getAllResources(nextUrl, type)
return [...resources, ...moreResources]
}
return resources
}
async function run(type) {
console.log(`fetching all ${type}`)
const resources = await getAllResources(
`https://egghead.io/api/v1/${type}?page=1&per_page=10`,
type
)
fs.writeFile(
`./data/${type}.json`,
JSON.stringify(resources, null, 2),
"utf8",
() => {}
)
}
types.forEach(run)