Merge branch 'master'
[arvados.git] / src / common / config.ts
index 4b4a52a3ea4169db5bebbca79e578c8c6230b01b..492328d986e55e3d6d2101d96f1d82f095a5690d 100644 (file)
@@ -2,22 +2,32 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-import Axios from "../../node_modules/axios";
+import Axios from "axios";
 
 export const CONFIG_URL = process.env.REACT_APP_ARVADOS_CONFIG_URL || "/config.json";
 
 export interface Config {
-    API_HOST: string;
+    apiHost: string;
+    keepWebHost: string;
 }
 
-const defaultConfig: Config = {
-    API_HOST: process.env.REACT_APP_ARVADOS_API_HOST || ""
-};
-
 export const fetchConfig = () => {
     return Axios
         .get<Config>(CONFIG_URL + "?nocache=" + (new Date()).getTime())
         .then(response => response.data)
-        .catch(() => Promise.resolve(defaultConfig));
+        .catch(() => Promise.resolve(getDefaultConfig()))
+        .then(mapConfig);
 };
 
+const mapConfig = (config: Config): Config => ({
+    ...config,
+    apiHost: addProtocol(config.apiHost),
+    keepWebHost: addProtocol(config.keepWebHost)
+});
+
+const getDefaultConfig = (): Config => ({
+    apiHost: process.env.REACT_APP_ARVADOS_API_HOST || "",
+    keepWebHost: process.env.REACT_APP_ARVADOS_KEEP_WEB_HOST || ""
+});
+
+const addProtocol = (url: string) => `${window.location.protocol}//${url}`;