From 8cdf5ebe67b899871a76c575a6141215655aa955 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Sat, 8 Jun 2024 00:42:32 +0530 Subject: [PATCH] feat: get best url representatio --- .../workflow-management/classes/Generator.ts | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/server/src/workflow-management/classes/Generator.ts b/server/src/workflow-management/classes/Generator.ts index d9e25378..bade1a56 100644 --- a/server/src/workflow-management/classes/Generator.ts +++ b/server/src/workflow-management/classes/Generator.ts @@ -634,4 +634,32 @@ export class WorkflowGenerator { } + private getBestUrl = (url: string) => { + const parsedUrl = new URL(url); + const protocol = parsedUrl.protocol === 'https:' || parsedUrl.protocol === 'http:' ? `${parsedUrl.protocol}//`: parsedUrl.protocol; + const regex = new RegExp(/(?=.*[A-Z])/g) + // remove all params with uppercase letters, they are most likely dynamically generated + // also escapes all regex characters from the params + const search = parsedUrl.search + .replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + .split('&').map((param, index) => { + if (!regex.test(param)) { + return param; + } else { + return '.*'; + } + }) + .join('&'); + let bestUrl; + if (search) { + bestUrl = { + $regex: `^${protocol}${parsedUrl.host}${parsedUrl.pathname}${search}${parsedUrl.hash}` + } + } else { + bestUrl = `${protocol}${parsedUrl.host}${parsedUrl.pathname}${parsedUrl.hash}`; + } + return bestUrl; + } + + }