diff options
author | Wouter Admiraal <wouter.admiraal@sonarsource.com> | 2021-08-17 15:50:55 +0200 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2021-08-20 20:03:08 +0000 |
commit | 6ef7ca151ecd602ca8e9cea21743a895a81e89ba (patch) | |
tree | 40d7a97a8075b416901a4078638e4cde9ee15942 /server/sonar-web/src/main/js/sonar-ui-common/helpers/urls.ts | |
parent | 2454e077b1d77d70508dcce6a5b015d4a69f41fa (diff) | |
download | sonarqube-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.ts | 79 |
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)); +} |