UNPKG

warframe-worldstate-parser

Version:

An Open parser for Warframe's Worldstate in Javascript

46 lines (45 loc) 1.45 kB
//#region lib/supporting/FetchProxy.ts const proxyUrl = process.env.PROXY_URL ?? void 0; const isCI = process.env.CI === "true"; const ciTimeout = process.env.CI_TIMEOUT ? parseInt(process.env.CI_TIMEOUT, 10) : 6e4; const localTimeout = process.env.LOCAL_TIMEOUT ? parseInt(process.env.LOCAL_TIMEOUT, 10) : 12e6; const fetchProxy = async (url, { session = "parser-session", contentType = "application/json" } = { session: "parser-session", contentType: "application/json" }) => { if (proxyUrl) { const text = await (await fetch(`${proxyUrl}/v1`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ cmd: "request.get", url, session, maxTimeout: isCI ? ciTimeout : localTimeout, returnOnlyCookies: false, returnPageContent: true }) })).text(); const { solution } = JSON.parse(text); if (!solution?.response) throw solution; if (contentType === "application/json") return { ok: solution.responseCode === 200, status: solution.responseCode, json: async () => { try { return JSON.parse(solution.response); } catch (_error) { return {}; } } }; if (contentType === "text/html") return { ok: solution.responseCode === 200, status: solution.responseCode, text: async () => solution.response.replace(/<\/?[^>]+(>|$)/g, "") }; return solution.response; } else return fetch(url); }; //#endregion export { fetchProxy };