68 lines
1.7 KiB
JavaScript
68 lines
1.7 KiB
JavaScript
const { wait } = require("./helpers");
|
|
const insomnium = require("./insomnium.json");
|
|
const fs = require("fs");
|
|
|
|
const WAIT_BETWEEN_REQS_MS = 500;
|
|
const PER_PAGE=500;
|
|
|
|
const groups = insomnium.resources
|
|
.filter(res => res._type === "request_group");
|
|
|
|
const las = insomnium.resources
|
|
.filter(res =>
|
|
res._type === "request" &&
|
|
res.name === "/services")
|
|
.map(res => ({
|
|
group: groups.find(group => group._id == res.parentId),
|
|
res
|
|
}));
|
|
|
|
(async() => {
|
|
console.log('Fetching LAs...');
|
|
|
|
for (let la of las) {
|
|
const laName = la.group.name;
|
|
|
|
console.log(`Fetching services for ${laName}...`);
|
|
const services = await fetchServices(la.res.url);
|
|
console.log(`Found ${services.length} services for ${laName}!`);
|
|
|
|
await writeServices(laName, services);
|
|
}
|
|
})();
|
|
|
|
async function fetchServices(ep) {
|
|
let page = 1;
|
|
let services = [];
|
|
|
|
do {
|
|
const pagedEp = `${ep}?page=${page}&per_page=${PER_PAGE}`;
|
|
const resp = await fetch(pagedEp);
|
|
console.log(pagedEp);
|
|
|
|
if (!resp.ok) {
|
|
console.warn(`Could not fetch services for ${ep}. Skipping. (Resp code ${resp.status})`);
|
|
return [];
|
|
}
|
|
|
|
const json = await resp.json();
|
|
|
|
services = [...services, ...json.content];
|
|
|
|
if (json.last == true) {
|
|
console.log("All services found!")
|
|
break;
|
|
}
|
|
|
|
console.log(`Loaded ${services.length} of total ${json.totalElements}...`);
|
|
|
|
page++;
|
|
await wait(WAIT_BETWEEN_REQS_MS);
|
|
} while (true);
|
|
|
|
return services;
|
|
}
|
|
|
|
async function writeServices(name, services) {
|
|
await fs.promises.writeFile(`data/${name}.json`, JSON.stringify(services, null, 2));
|
|
}
|