0
0
mirror of https://github.com/fawazahmed0/exchange-api.git synced 2025-06-29 18:21:14 +00:00
exchange-api/other/cache-jsdelivr-api.js
2024-03-01 15:20:48 +05:30

48 lines
1.1 KiB
JavaScript

// Fetch all latest & todays links to cache the data by jsdelivr
let url = "https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api"
let apiLinks = [url]
let extensions = [".min.json", ".json"]
async function begin() {
for (let dateValue of ['latest', new Date().toISOString().substring(0, 10).replaceAll('-','.').replace(/\.0+(\d+)/gi , ".$1")]) {
let data = await fetch(`${url}@${dateValue}/v1/currencies.json`).then(res => res.json())
let currencies = Object.keys(data)
await multipleFetch(getURLs(`${url}@${dateValue}/v1/currencies`))
for (let curr of currencies) {
let promiseHolder = []
promiseHolder.push(multipleFetch(getURLs(`${url}@${dateValue}/v1/currencies/${curr}`)))
await Promise.allSettled(promiseHolder)
}
}
}
async function multipleFetch(links) {
for (let link of links)
await fetch(link, { method: 'HEAD' })
}
function getURLs(endpoint, links) {
links = links || apiLinks
return extensions.map(ext => links.map(e => e + endpoint + ext)).flat()
}
begin()