Ext.ns("Terrasoft.utils.uri"); /** * Utility class for working with URI. * @singleton */ /** * Returns query of the link. * @param {HTMLAnchorElement | String} link. * @return {String}. */ Terrasoft.utils.uri.getQueryStrig = function (link) { if (Ext.isString(link)) { var href = link; link = document.createElement("a"); link.href = href; } var queryString = ""; if (link instanceof HTMLAnchorElement) { queryString = link.search || ""; } return queryString.substring(1); }; /** * Alias for {@link Terrasoft.utils.uri#getQueryStrig} * @member Terrasoft * @method getQueryStrig * @inheritdoc Terrasoft.utils.uri#getQueryStrig */ Terrasoft.getQueryStrig = Terrasoft.utils.uri.getQueryStrig; /** * Removes parameters from query of the uri. * @param {HTMLAnchorElement | String} sourceLink. * @param {Array[]} parameters. * @returns {String} uri. */ Terrasoft.utils.uri.removeQueryParameters = function (sourceLink, parameters) { function getUri(sourceLink) { if (sourceLink instanceof HTMLAnchorElement) { var hrefNode = sourceLink.attributes.getNamedItem("href"); var uri = ""; if (hrefNode) { uri = hrefNode.nodeValue; } return uri; } else { return sourceLink; } } var uri = getUri(sourceLink); if (Ext.isEmpty(uri) || !Ext.isString(uri)) { return ""; } var link = document.createElement("a"); link.href = uri; if (Ext.isEmpty(link.search)) { return uri; } var queryString = Terrasoft.getQueryStrig(link); var queryParameters = Ext.urlDecode(queryString); Terrasoft.removeProperties(queryParameters, parameters); link.search = Ext.urlEncode(queryParameters); var href = link.href || ""; if (Ext.String.endsWith(href, "?")) { href = href.replace(/\?$/, ""); } link = null; return href; }; /** * Alias for {@link Terrasoft.utils.uri#removeQueryParameters} * @member Terrasoft * @method removeQueryParameters * @inheritdoc Terrasoft.utils.uri#removeQueryParameters */ Terrasoft.removeQueryParameters = Terrasoft.utils.uri.removeQueryParameters; /** * Checks whether string is valid URL. * @param {String} value String representation of URL. * @return {Boolean} Returns true if string is valid URL. */ Terrasoft.utils.uri.isUrl = function (value) { /*jshint maxlen:170 */ //jscs:disable maximumLineLength var pattern = /(((^https?)|(^ftp)):\/\/([\-\w])+(\.[a-z]{2,4})*(:[0-9]+)?(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*)\/?/i; //jscs:enable maximumLineLength /*jshint maxlen:120 */ return pattern.test(value); }; /** * Alias for {@link Terrasoft.utils.uri#isUrl} * @member Terrasoft * @method isUrl * @inheritdoc Terrasoft.utils.uri#isUrl */ Terrasoft.isUrl = Terrasoft.utils.uri.isUrl; /** * Returns urls from input string. * @param {String} value String representation of URL. * @return {String[]} Returns urls from input string. */ Terrasoft.utils.uri.getUrls = function (value) { if (!Ext.isString(value)) { return []; } /*jshint maxlen:170 */ //jscs:disable maximumLineLength var pattern = /(((https?)|(ftp)):\/\/([\-\w])+(\.[a-z]{2,4})*(:[0-9]+)?(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*)\/?/ig; //jscs:enable maximumLineLength return value.match(pattern) || []; }; /** * Alias for {@link Terrasoft.utils.uri#getUrls} * @member Terrasoft * @method getUrls * @inheritdoc Terrasoft.utils.uri#getUrls */ Terrasoft.getUrls = Terrasoft.utils.uri.getUrls; /** * Adds protocol prefix for URL string. * @param {String} url Uniform resource locator. * @return {String} URL with protocol prefix. */ Terrasoft.utils.uri.addProtocolPrefix = function (url) { var rg = new RegExp("((ftp|http|https|file):\/\/)+", "i"); return rg.test(url) ? url : "http://" + url; }; /** * Alias for {@link Terrasoft.utils.uri#addProtocolPrefix} * @member Terrasoft * @method addProtocolPrefix * @inheritdoc Terrasoft.utils.uri#addProtocolPrefix */ Terrasoft.addProtocolPrefix = Terrasoft.utils.uri.addProtocolPrefix; /** * Checks whether string is valid URL ignoring protocol. * @param {String} url String representation of URL. * @return {Boolean} Returns true if string is valid URL. */ Terrasoft.utils.uri.isAValidUrlIgnoreProtocol = function (url) { return new RegExp(/[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi).test(url); }; /** * Checks whether string is valid network path. * @param {String} path String representation of URL. * @return {Boolean} Returns true if string is valid URL. */ Terrasoft.utils.uri.isAValidNetworkPath = function (path) { return new RegExp(/^\\(\\[^\s\\]+)+(\\)?$/gi).test(path); }; /** * Returns Url origin. * @param {String} url Any valid URL. * @return {String} origin of the given URL. */ Terrasoft.utils.uri.getUrlOrigin = function (url) { var linkElement = document.createElement("a"); linkElement.href = url; return linkElement.origin; }; /** * Alias for {@link Terrasoft.utils.uri#getUrlOrigin} * @member Terrasoft * @method getUrlOrigin * @inheritdoc Terrasoft.utils.uri#getUrlOrigin */ Terrasoft.getUrlOrigin = Terrasoft.utils.uri.getUrlOrigin; /** * Returns Url of empty module. * @return {String} Empty module url. */ Terrasoft.getEmptyModuleUrl = function () { return "../core/hash/Terrasoft/amd/empty-module"; };