Files
discourse/app/assets/javascripts/discourse-common/addon/lib/get-url.js
Robin Ward ba00cc8ec4 DEV: Move Discourse.getURL and related functions to a module (#9966)
* DEV: Move `Discourse.getURL` and related functions to a module

* DEV: Remove `Discourse.getURL` and `Discourse.getURLWithCDN`

* FIX: `get-url` is required for server side code

* DEV: Deprecate `BaseUri` too.
2020-06-03 12:45:26 -04:00

60 lines
1.3 KiB
JavaScript

let cdn, baseUrl, baseUri;
let S3BaseUrl, S3CDN;
export default function getURL(url) {
if (!url) return url;
if (!baseUri) {
baseUri = $('meta[name="discourse-base-uri"]').attr("content") || "";
}
// if it's a non relative URL, return it.
if (url !== "/" && !/^\/[^\/]/.test(url)) return url;
const found = url.indexOf(baseUri);
if (found >= 0 && found < 3) return url;
if (url[0] !== "/") url = "/" + url;
return baseUri + url;
}
export function getURLWithCDN(url) {
url = getURL(url);
// only relative urls
if (cdn && /^\/[^\/]/.test(url)) {
url = cdn + url;
} else if (S3CDN) {
url = url.replace(S3BaseUrl, S3CDN);
}
return url;
}
export function getAbsoluteURL(path) {
return baseUrl + path;
}
export function isAbsoluteURL(url) {
return url.startsWith(baseUrl);
}
export function withoutPrefix(path) {
const rootURL = (!baseUri ? "/" : baseUri).replace(/\/$/, "");
return path.replace(rootURL, "");
}
export function setPrefix(configBaseUri) {
baseUri = configBaseUri;
}
export function setupURL(configCdn, configBaseUrl, configBaseUri) {
cdn = configCdn;
baseUrl = configBaseUrl;
baseUri = configBaseUri;
}
export function setupS3CDN(configS3BaseUrl, configS3CDN) {
S3BaseUrl = configS3BaseUrl;
S3CDN = configS3CDN;
}