From e71220b6193ac1cc6c4956440f1c435c99591fd2 Mon Sep 17 00:00:00 2001 From: netpro2k <netpro2k@gmail.com> Date: Wed, 25 Jul 2018 18:02:16 -0700 Subject: [PATCH] Add a simple resolver cache for farspark urls --- src/utils/media-utils.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/utils/media-utils.js b/src/utils/media-utils.js index e4f812b59..7d699d172 100644 --- a/src/utils/media-utils.js +++ b/src/utils/media-utils.js @@ -5,16 +5,21 @@ if (process.env.NODE_ENV === "development") { resolveMediaUrl = `https://${process.env.DEV_RETICULUM_SERVER}${resolveMediaUrl}`; } +const farsparkCache = new Map(); export const resolveFarsparkUrl = async url => { const parsedUrl = new URL(url); - if ((parsedUrl.protocol !== "http:" && parsedUrl.protocol !== "https:") || isHostWhitelisted(parsedUrl.hostname)) - return { raw: url, origin: url }; + if (farsparkCache.has(url)) return farsparkCache.get(url); - return await fetch(resolveMediaUrl, { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ media: { url } }) - }).then(r => r.json()); + const resolved = + (parsedUrl.protocol !== "http:" && parsedUrl.protocol !== "https:") || isHostWhitelisted(parsedUrl.hostname) + ? { raw: url, origin: url } + : await fetch(resolveMediaUrl, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ media: { url } }) + }).then(r => r.json()); + farsparkCache.set(url, resolved); + return resolved; }; let interactableId = 0; -- GitLab