From 07069eecfad5134ee3447a849d1a2b5c582bf5d4 Mon Sep 17 00:00:00 2001
From: Greg Fodor <gfodor@gmail.com>
Date: Tue, 7 Aug 2018 17:14:28 +0000
Subject: [PATCH] Remove networked content type state by properly passing auth
 token header

---
 src/components/media-loader.js | 14 ++++++++++----
 src/utils/media-utils.js       |  3 +--
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/components/media-loader.js b/src/components/media-loader.js
index 1b67a41e6..d71801161 100644
--- a/src/components/media-loader.js
+++ b/src/components/media-loader.js
@@ -1,13 +1,20 @@
 import { getBox, getScaleCoefficient } from "../utils/auto-box-collider";
 import { resolveMedia } from "../utils/media-utils";
 
-const fetchContentType = async url => fetch(url, { method: "HEAD" }).then(r => r.headers.get("content-type"));
+const fetchContentType = async (url, token) => {
+  const args = { method: "HEAD" };
+
+  if (token) {
+    args.headers = { Authorization: `Token ${token}` };
+  }
+
+  return fetch(url, args).then(r => r.headers.get("content-type"));
+};
 
 AFRAME.registerComponent("media-loader", {
   schema: {
     src: { type: "string" },
     token: { type: "string" },
-    contentType: { type: "string" },
     resize: { default: false }
   },
 
@@ -64,8 +71,7 @@ AFRAME.registerComponent("media-loader", {
       const { raw, origin, meta } = await resolveMedia(url);
       console.log("resolved", url, raw, origin, meta);
 
-      const contentType =
-        this.data.contentType || (meta && meta.expected_content_type) || (await fetchContentType(raw));
+      const contentType = (meta && meta.expected_content_type) || (await fetchContentType(raw, token));
       let blobUrl;
       if (token) {
         const response = await fetch(raw, {
diff --git a/src/utils/media-utils.js b/src/utils/media-utils.js
index 697612d53..770b69819 100644
--- a/src/utils/media-utils.js
+++ b/src/utils/media-utils.js
@@ -45,9 +45,8 @@ export const addMedia = (src, resize = false) => {
     upload(src)
       .then(response => {
         const src = response.raw;
-        const contentType = response.meta.expected_content_type;
         const token = response.meta.access_token;
-        entity.setAttribute("media-loader", { src, contentType, token });
+        entity.setAttribute("media-loader", { src, token });
       })
       .catch(() => {
         entity.setAttribute("media-loader", { src: "error" });
-- 
GitLab