splatoon3.ink/app/splatnet/index.mjs
2024-03-17 10:20:17 -07:00

39 lines
983 B
JavaScript

import NsoClient, { regionTokens } from './NsoClient.mjs';
import SplatNet3Client, { SPLATNET3_WEB_SERVICE_ID } from './SplatNet3Client.mjs';
/**
* Cache Warming
*
* This helps ensure we have reliable access to the SplatNet 3 API,
* even if e.g. the imink API has intermittent downtime.
*/
export async function warmCaches() {
console.info('Warming caches...');
for (let [region, token] of Object.entries(regionTokens())) {
if (!token) {
console.warn('Session token not set for region %s', region);
continue;
}
await warmCache(region);
}
}
export async function warmCache(region) {
let nso = NsoClient.make(region);
let splatnet = new SplatNet3Client(nso);
await safe(() => nso.getCoralApi(false));
await safe(() => nso.getWebServiceToken(SPLATNET3_WEB_SERVICE_ID, false));
await safe(() => splatnet.getBulletToken(false));
}
async function safe(callable) {
try {
await callable();
} catch (e) {
console.error(e);
}
}