aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/src/main/js/sonar-ui-common/helpers/urls.ts
diff options
context:
space:
mode:
authorWouter Admiraal <wouter.admiraal@sonarsource.com>2021-08-17 15:50:55 +0200
committersonartech <sonartech@sonarsource.com>2021-08-20 20:03:08 +0000
commit6ef7ca151ecd602ca8e9cea21743a895a81e89ba (patch)
tree40d7a97a8075b416901a4078638e4cde9ee15942 /server/sonar-web/src/main/js/sonar-ui-common/helpers/urls.ts
parent2454e077b1d77d70508dcce6a5b015d4a69f41fa (diff)
downloadsonarqube-6ef7ca151ecd602ca8e9cea21743a895a81e89ba.tar.gz
sonarqube-6ef7ca151ecd602ca8e9cea21743a895a81e89ba.zip
SONAR-15297 Move sonar-ui-common code to sonar-web
Diffstat (limited to 'server/sonar-web/src/main/js/sonar-ui-common/helpers/urls.ts')
-rw-r--r--server/sonar-web/src/main/js/sonar-ui-common/helpers/urls.ts79
1 files changed, 79 insertions, 0 deletions
diff --git a/server/sonar-web/src/main/js/sonar-ui-common/helpers/urls.ts b/server/sonar-web/src/main/js/sonar-ui-common/helpers/urls.ts
new file mode 100644
index 00000000000..296091d7b3c
--- /dev/null
+++ b/server/sonar-web/src/main/js/sonar-ui-common/helpers/urls.ts
@@ -0,0 +1,79 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2021 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+/*
+ * SonarQube
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+import { isNil, omitBy } from 'lodash';
+import { stringify } from 'querystring';
+import { getUrlContext, IS_SSR } from './init';
+
+interface Query {
+ [x: string]: string | undefined;
+}
+
+export interface Location {
+ pathname: string;
+ query?: Query;
+}
+
+export function getBaseUrl(): string {
+ return getUrlContext();
+}
+
+export function getHostUrl(): string {
+ if (IS_SSR) {
+ throw new Error('No host url available on server side.');
+ }
+ return window.location.origin + getBaseUrl();
+}
+
+export function getPathUrlAsString(path: Location, internal = true): string {
+ return `${internal ? getBaseUrl() : getHostUrl()}${path.pathname}?${stringify(
+ omitBy(path.query, isNil)
+ )}`;
+}
+
+export function getReturnUrl(location: { hash?: string; query?: { return_to?: string } }) {
+ const returnTo = location.query && location.query['return_to'];
+ if (isRelativeUrl(returnTo)) {
+ return returnTo + (location.hash ? location.hash : '');
+ }
+ return getBaseUrl() + '/';
+}
+
+export function isRelativeUrl(url?: string): boolean {
+ const regex = new RegExp(/^\/[^/\\]/);
+ return Boolean(url && regex.test(url));
+}