UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

73 lines (72 loc) 2.48 kB
/** * DevExtreme (data/proxy_url_formatter.js) * Version: 18.1.3 * Build date: Tue May 15 2018 * * Copyright (c) 2012 - 2018 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; var each = require("../core/utils/iterator").each, domAdapter = require("../core/dom_adapter"), window = require("../core/utils/window").getWindow(), callOnce = require("../core/utils/call_once"), DXPROXY_HOST = "dxproxy.devexpress.com:8000", urlMapping = {}; var getUrlParser = callOnce(function() { var a = domAdapter.createElement("a"), props = ["protocol", "hostname", "port", "pathname", "search", "hash"]; var normalizePath = function(value) { if ("/" !== value.charAt(0)) { value = "/" + value } return value }; return function(url) { a.href = url; var result = {}; each(props, function() { result[this] = a[this] }); result.pathname = normalizePath(result.pathname); return result } }); var parseUrl = function(url) { var urlParser = getUrlParser(); return urlParser(url) }; var extractProxyAppId = function() { return window.location.pathname.split("/")[1] }; module.exports = { parseUrl: parseUrl, isProxyUsed: function() { return window.location.host === DXPROXY_HOST }, formatProxyUrl: function(localUrl) { var urlData = parseUrl(localUrl); if (!/^(localhost$|127\.)/i.test(urlData.hostname)) { return localUrl } var proxyUrlPart = DXPROXY_HOST + "/" + extractProxyAppId() + "_" + urlData.port; urlMapping[proxyUrlPart] = urlData.hostname + ":" + urlData.port; var resultUrl = "http://" + proxyUrlPart + urlData.pathname + urlData.search; return resultUrl }, formatLocalUrl: function(proxyUrl) { if (proxyUrl.indexOf(DXPROXY_HOST) < 0) { return proxyUrl } var resultUrl = proxyUrl; for (var proxyUrlPart in urlMapping) { if (urlMapping.hasOwnProperty(proxyUrlPart)) { if (proxyUrl.indexOf(proxyUrlPart) >= 0) { resultUrl = proxyUrl.replace(proxyUrlPart, urlMapping[proxyUrlPart]); break } } } return resultUrl } };