X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/10ce16c28de952f6533ca3cc9df909269e3d2a53..5e805cf2209d3afe42699e4658d8a12e50bcd5a4:/src/common/url.ts diff --git a/src/common/url.ts b/src/common/url.ts index 1824f26a..db12cb8e 100644 --- a/src/common/url.ts +++ b/src/common/url.ts @@ -1,6 +1,35 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + export function getUrlParameter(search: string, name: string) { - const safeName = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]'); + const safeName = name.replace(/[[]/, '\\[').replace(/[\]]/, '\\]'); const regex = new RegExp('[\\?&]' + safeName + '=([^&#]*)'); const results = regex.exec(search); return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' ')); } + +export function normalizeURLPath(url: string) { + const u = new URL(url); + u.pathname = u.pathname.replace(/\/\//, '/'); + if (u.pathname[u.pathname.length - 1] === '/') { + u.pathname = u.pathname.substring(0, u.pathname.length - 1); + } + return u.toString(); +} + +export const customEncodeURI = (path: string) => { + try { + return path.split('/').map(encodeURIComponent).join('/'); + } catch(e) {} + + return path; +}; + +export const customDecodeURI = (path: string) => { + try { + return path.split('%2F').map(decodeURIComponent).join('%2F'); + } catch(e) {} + + return path; +};