UNPKG

terriajs

Version:

Geospatial data visualization platform.

53 lines (49 loc) 2.08 kB
"use strict"; const i18next = require("i18next").default; var defaultValue = require("terriajs-cesium/Source/Core/defaultValue").default; var loadJson = require("./loadJson").default; var DEFAULT_URL = "serverconfig/"; /** * Provides information about the configuration of the Terria server, by querying /serverconfig */ function ServerConfig() { /** * Contains configuration information retrieved from the server. The attributes are defined by TerriaJS-Server but include: * version: current version of server * proxyAllDomains: whether all domains can be proxied * allowProxyFrom: array of domains that can be proxied * maxConversionSize: maximum size, in bytes, of files that can be uploaded to conversion service * newShareUrlPrefix: if defined, the share URL service is active * shareUrlPrefixes: object defining share URL prefixes that can be resolved * additionalFeedbackParameters: array of additional feedback parameters that can be used * @type {Object} */ this.config = undefined; } /** * Initialises the object by fetching the configuration from the server. Note that if the request to get config from the proxy server fails, an error * is logged and nothing else happens. If you want to do something more like display a warning to the user, you'll have * to .catch the promise returned from the method. * @param {String} serverConfigUrl Optional override URL. * @return {Object} Promise that resolves to the configuration object itself. */ ServerConfig.prototype.init = function (serverConfigUrl) { if (this.config !== undefined) { return Promise.resolve(this.config); } this.serverConfigUrl = defaultValue(serverConfigUrl, DEFAULT_URL); var that = this; return loadJson(this.serverConfigUrl) .then(function (config) { that.config = config; return that.config; }) .catch(function (e) { console.error( i18next.t("core.serverConfig.failedToGet", { serverConfigUrl: that.serverConfigUrl }) ); }); }; module.exports = ServerConfig;