From 01dff1cdd034a23ff54b0525e1780727f2e489e1 Mon Sep 17 00:00:00 2001 From: Gabriel Handeland Date: Thu, 16 Feb 2023 15:37:27 +0100 Subject: [PATCH 1/4] strip away version from batch request url --- src/content/BatchRequestContent.ts | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/content/BatchRequestContent.ts b/src/content/BatchRequestContent.ts index ce76ead1f..b83618173 100644 --- a/src/content/BatchRequestContent.ts +++ b/src/content/BatchRequestContent.ts @@ -198,9 +198,25 @@ export class BatchRequestContent { const requestData: RequestData = { url: "", }; - const hasHttpRegex = new RegExp("^https?://"); + // Stripping off hostname, port and url scheme - requestData.url = hasHttpRegex.test(request.url) ? "/" + request.url.split(/.*?\/\/.*?\//)[1] : request.url; + const hasHttpRegex = new RegExp("^https?://"); + + if (hasHttpRegex.test(request.url)) { + // Strip away host segment + let path = request.url.split(/.*?\/\/.*?\//)[1]; + + // Strip away version + const endOfVersionStrPos = path.indexOf("/"); + if (endOfVersionStrPos !== -1) { + path = path.substring(0, endOfVersionStrPos); + } + + requestData.url = request.url; + } else { + requestData.url = request.url; + } + requestData.method = request.method; const headers = {}; request.headers.forEach((value, key) => { From e27f44e073336e60823ec163b39b2ec69103fc28 Mon Sep 17 00:00:00 2001 From: Gabriel Handeland Date: Fri, 17 Feb 2023 12:36:33 +0100 Subject: [PATCH 2/4] set url to stripped path --- src/content/BatchRequestContent.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/BatchRequestContent.ts b/src/content/BatchRequestContent.ts index b83618173..402fc7421 100644 --- a/src/content/BatchRequestContent.ts +++ b/src/content/BatchRequestContent.ts @@ -209,10 +209,10 @@ export class BatchRequestContent { // Strip away version const endOfVersionStrPos = path.indexOf("/"); if (endOfVersionStrPos !== -1) { - path = path.substring(0, endOfVersionStrPos); + path = path.substring(endOfVersionStrPos, path.length); } - requestData.url = request.url; + requestData.url = path; } else { requestData.url = request.url; } From 9b1c5630f6f3489f072e33996f7cfc69444032ba Mon Sep 17 00:00:00 2001 From: Gabriel Handeland Date: Fri, 17 Feb 2023 12:37:19 +0100 Subject: [PATCH 3/4] test a batch request with full url --- test/common/content/BatchRequestContent.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/common/content/BatchRequestContent.ts b/test/common/content/BatchRequestContent.ts index 72178b803..4dafecdff 100644 --- a/test/common/content/BatchRequestContent.ts +++ b/test/common/content/BatchRequestContent.ts @@ -213,6 +213,14 @@ describe("BatchRequestContent.ts", () => { assert.isDefined(content.requests[0].body); assert.equal(typeof content.requests[0].body, "object"); }); + + it("Should parse path with url", async () => { + const req = getCreateFolderRequestCopy(); + req.request = new Request("https://graph.microsoft.com/v1.0" + req.request.url); + const batchReq = new BatchRequestContent([req]); + const content = await batchReq.getContent(); + assert.equal(content.requests[0].url, "/me/drive/root/children"); + }); }); describe("removeDependency", function() { From 4c275d17c518b27b68a19ccacefcb7d4b8f2b261 Mon Sep 17 00:00:00 2001 From: ghandeland <43483687+ghandeland@users.noreply.github.com> Date: Fri, 17 Feb 2023 15:07:17 +0100 Subject: [PATCH 4/4] replace host stripping block with regex based replace Co-authored-by: Vincent Biret --- src/content/BatchRequestContent.ts | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/src/content/BatchRequestContent.ts b/src/content/BatchRequestContent.ts index 402fc7421..261e79ebf 100644 --- a/src/content/BatchRequestContent.ts +++ b/src/content/BatchRequestContent.ts @@ -200,22 +200,7 @@ export class BatchRequestContent { }; // Stripping off hostname, port and url scheme - const hasHttpRegex = new RegExp("^https?://"); - - if (hasHttpRegex.test(request.url)) { - // Strip away host segment - let path = request.url.split(/.*?\/\/.*?\//)[1]; - - // Strip away version - const endOfVersionStrPos = path.indexOf("/"); - if (endOfVersionStrPos !== -1) { - path = path.substring(endOfVersionStrPos, path.length); - } - - requestData.url = path; - } else { - requestData.url = request.url; - } + requestData.url = request.url.replace(/^(?:http)?s?:?(?:\/\/)?[^\/]+\/(?:v1.0|beta)?/i, ''); // replaces ??+?+ by an empty string requestData.method = request.method; const headers = {};