diff --git a/src/components/media-loader.js b/src/components/media-loader.js index 4cee88ae278628088caa870963b7c5faea0b7d4c..544d4443a4304e0ed1d3ad75523c89cafa46c979 100644 --- a/src/components/media-loader.js +++ b/src/components/media-loader.js @@ -1,5 +1,5 @@ import { getBox, getScaleCoefficient } from "../utils/auto-box-collider"; -import { resolveFarsparkUrl } from "../utils/media-utils"; +import { resolveMedia } from "../utils/media-utils"; const fetchContentType = async url => fetch(url, { method: "HEAD" }).then(r => r.headers.get("content-type")); @@ -53,7 +53,7 @@ AFRAME.registerComponent("media-loader", { this.setShapeAndScale(true); }, 100); - const { raw, origin, meta } = await resolveFarsparkUrl(url); + const { raw, origin, meta } = await resolveMedia(url); console.log("resolved", url, raw, origin, meta); const contentType = (meta && meta.expected_content_type) || (await fetchContentType(raw)); diff --git a/src/utils/media-utils.js b/src/utils/media-utils.js index 7d699d172b74d8582741132bd2e28c44d2b4c959..e864bfc9fd979ef42b4fd4083cd67325e3465b3a 100644 --- a/src/utils/media-utils.js +++ b/src/utils/media-utils.js @@ -1,24 +1,24 @@ const whitelistedHosts = [/^.*\.reticulum\.io$/, /^.*hubs\.mozilla\.com$/, /^hubs\.local$/]; const isHostWhitelisted = hostname => !!whitelistedHosts.filter(r => r.test(hostname)).length; -let resolveMediaUrl = "/api/v1/media"; +let mediaAPIEndpoint = "/api/v1/media"; if (process.env.NODE_ENV === "development") { - resolveMediaUrl = `https://${process.env.DEV_RETICULUM_SERVER}${resolveMediaUrl}`; + mediaAPIEndpoint = `https://${process.env.DEV_RETICULUM_SERVER}${mediaAPIEndpoint}`; } -const farsparkCache = new Map(); -export const resolveFarsparkUrl = async url => { +const resolveMediaCache = new Map(); +export const resolveMedia = async url => { const parsedUrl = new URL(url); - if (farsparkCache.has(url)) return farsparkCache.get(url); + if (resolveMediaCache.has(url)) return resolveMediaCache.get(url); const resolved = (parsedUrl.protocol !== "http:" && parsedUrl.protocol !== "https:") || isHostWhitelisted(parsedUrl.hostname) ? { raw: url, origin: url } - : await fetch(resolveMediaUrl, { + : await fetch(mediaAPIEndpoint, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ media: { url } }) }).then(r => r.json()); - farsparkCache.set(url, resolved); + resolveMediaCache.set(url, resolved); return resolved; }; diff --git a/src/vendor/GLTFLoader.js b/src/vendor/GLTFLoader.js index 5e23d9250e1f917f1206398fa361115e4be77d28..d92e1773df03db6a76566333fd77867c1a49342f 100644 --- a/src/vendor/GLTFLoader.js +++ b/src/vendor/GLTFLoader.js @@ -10,7 +10,7 @@ * @author netpro2k / https://github.com/netpro2k */ - import { resolveFarsparkUrl } from "../utils/media-utils" + import { resolveMedia } from "../utils/media-utils" THREE.GLTFLoader = ( function () { @@ -40,7 +40,7 @@ THREE.GLTFLoader = ( function () { loader.setResponseType( 'arraybuffer' ); - var farsparkURL = (await resolveFarsparkUrl(url)).raw; + var farsparkURL = (await resolveMedia(url)).raw; loader.load( farsparkURL, function ( data ) { @@ -1623,7 +1623,7 @@ THREE.GLTFLoader = ( function () { var options = this.options; - var farsparkURL = (await resolveFarsparkUrl(resolveURL(bufferDef.uri, options.path))).raw; + var farsparkURL = (await resolveMedia(resolveURL(bufferDef.uri, options.path))).raw; return new Promise( function ( resolve, reject ) { @@ -1823,7 +1823,7 @@ THREE.GLTFLoader = ( function () { var urlToLoad = resolveURL(sourceURI, options.path); if (!hasBufferView){ - urlToLoad = (await resolveFarsparkUrl(urlToLoad)).raw; + urlToLoad = (await resolveMedia(urlToLoad)).raw; } return Promise.resolve( sourceURI ).then( function ( sourceURI ) {