From ec51cbbd9f779b0d90c8fffc4df9abb8829f8af9 Mon Sep 17 00:00:00 2001 From: Oliver Eyton-Williams Date: Wed, 18 Oct 2023 17:50:13 +0200 Subject: [PATCH] fix(api): handle trailing / in MS transcript urls (#51766) Co-authored-by: Tom <20648924+moT01@users.noreply.github.com> --- api-server/src/server/boot/user.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/api-server/src/server/boot/user.js b/api-server/src/server/boot/user.js index 00d30e3e877..e539911ea7a 100644 --- a/api-server/src/server/boot/user.js +++ b/api-server/src/server/boot/user.js @@ -112,6 +112,17 @@ function deleteUserTokenResponse(req, res) { return res.send({ userToken: null }); } +export const getMsTranscriptApiUrl = msTranscript => { + // example msTranscriptUrl: https://learn.microsoft.com/en-us/users/mot01/transcript/8u6awert43q1plo + const url = new URL(msTranscript); + + const transcriptUrlRegex = /\/transcript\/([^/]+)\/?/; + const id = transcriptUrlRegex.exec(url.pathname)?.[1]; + return `https://learn.microsoft.com/api/profiles/transcript/share/${ + id ?? '' + }`; +}; + function createPostMsUsername(app) { const { MsUsername } = app.models; @@ -129,8 +140,7 @@ function createPostMsUsername(app) { }); } - const msTranscriptId = msTranscriptUrl.split('/').pop(); - const msTranscriptApiUrl = `https://learn.microsoft.com/api/profiles/transcript/share/${msTranscriptId}`; + const msTranscriptApiUrl = getMsTranscriptApiUrl(msTranscriptUrl); try { const msApiRes = await fetch(msTranscriptApiUrl);