From 44c52067dffe482dc44e5225fcdaa16a6fc6a617 Mon Sep 17 00:00:00 2001 From: Calvin Lee Date: Sun, 29 Sep 2024 14:01:54 -0700 Subject: [PATCH 1/3] feat: fix issue in repos and parsing Signed-off-by: Calvin Lee --- packages/integration/src/harness/core.ts | 72 ++++++++++++++++-------- 1 file changed, 47 insertions(+), 25 deletions(-) diff --git a/packages/integration/src/harness/core.ts b/packages/integration/src/harness/core.ts index 1887a5c0d8..af2dab8a89 100644 --- a/packages/integration/src/harness/core.ts +++ b/packages/integration/src/harness/core.ts @@ -62,13 +62,19 @@ export function getHarnessFileContentsUrl( ) { const parsedUrl = parseHarnessUrl(config, url); - return `${parsedUrl.baseUrl}/gateway/code/api/v1/repos/${ - parsedUrl.accountId - }/${parsedUrl.orgName}${ - parsedUrl.projectName !== '' ? `/${parsedUrl.projectName}/` : '/' - }${parsedUrl.repoName}/+/raw/${parsedUrl.path}?routingId=${ - parsedUrl.accountId - }&git_ref=refs/heads/${parsedUrl.refString}`; + let constructedUrl = `${parsedUrl.baseUrl}/gateway/code/api/v1/repos/${parsedUrl.accountId}`; + + if (parsedUrl.orgName) { + constructedUrl += `/${parsedUrl.orgName}`; + } + + if (parsedUrl.projectName) { + constructedUrl += `/${parsedUrl.projectName}`; + } + + constructedUrl += `/${parsedUrl.repoName}/+/raw/${parsedUrl.path}?routingId=${parsedUrl.accountId}&git_ref=refs/heads/${parsedUrl.refString}`; + + return constructedUrl; } /** @@ -90,13 +96,20 @@ export function getHarnessArchiveUrl( url: string, ) { const parsedUrl = parseHarnessUrl(config, url); - return `${parsedUrl.baseUrl}/gateway/code/api/v1/repos/${ - parsedUrl.accountId - }/${parsedUrl.orgName}${ - parsedUrl.projectName !== '' ? `/${parsedUrl.projectName}/` : '/' - }${parsedUrl.repoName}/+/archive/${parsedUrl.branch}.zip?routingId=${ - parsedUrl.accountId - }`; + + let constructedUrl = `${parsedUrl.baseUrl}/gateway/code/api/v1/repos/${parsedUrl.accountId}`; + + if (parsedUrl.orgName) { + constructedUrl += `/${parsedUrl.orgName}`; + } + + if (parsedUrl.projectName) { + constructedUrl += `/${parsedUrl.projectName}`; + } + + constructedUrl += `/${parsedUrl.repoName}/+/archive/${parsedUrl.branch}.zip?routingId=${parsedUrl.accountId}`; + + return constructedUrl; } /** @@ -118,13 +131,20 @@ export function getHarnessLatestCommitUrl( url: string, ) { const parsedUrl = parseHarnessUrl(config, url); - return `${parsedUrl.baseUrl}/gateway/code/api/v1/repos/${ - parsedUrl.accountId - }/${parsedUrl.orgName}${ - parsedUrl.projectName !== '' ? `/${parsedUrl.projectName}/` : '/' - }${parsedUrl.repoName}/+/content?routingId=${ - parsedUrl.accountId - }&include_commit=true&git_ref=refs/heads/${parsedUrl.branch}`; + + let constructedUrl = `${parsedUrl.baseUrl}/gateway/code/api/v1/repos/${parsedUrl.accountId}`; + + if (parsedUrl.orgName) { + constructedUrl += `/${parsedUrl.orgName}`; + } + + if (parsedUrl.projectName) { + constructedUrl += `/${parsedUrl.projectName}`; + } + + constructedUrl += `/${parsedUrl.repoName}/+/content?routingId=${parsedUrl.accountId}&include_commit=true&git_ref=refs/heads/${parsedUrl.branch}`; + + return constructedUrl; } /** @@ -185,18 +205,20 @@ export function parseHarnessUrl( const orgNameIndex = pathSegments.findIndex(segment => segment === 'orgs'); const orgName = orgNameIndex !== -1 ? pathSegments[orgNameIndex + 1] : ''; - const projectNameIndex = pathSegments.findIndex( segment => segment === 'projects', ); const projectName = projectNameIndex !== -1 ? pathSegments[projectNameIndex + 1] : ''; - + // Adjust repoNameIndex to correctly identify the repository name const repoNameIndex = - pathSegments.findIndex(segment => segment === 'repos') + 1; + pathSegments.findIndex( + (segment, index) => + segment === 'repos' && + index > Math.max(accountIdIndex, orgNameIndex, projectNameIndex), + ) + 1; const repoName = pathSegments[repoNameIndex]; - const refAndPath = urlParts.slice( urlParts.findIndex(i => i === 'files' || i === 'edit') + 1, ); From 090e49a1f381bd940603b82c188650e2ae0d62ba Mon Sep 17 00:00:00 2001 From: Calvin Lee Date: Sun, 29 Sep 2024 14:07:41 -0700 Subject: [PATCH 2/3] feat: fix issue in repos and parsing Signed-off-by: Calvin Lee --- .changeset/tough-pillows-sip.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/tough-pillows-sip.md diff --git a/.changeset/tough-pillows-sip.md b/.changeset/tough-pillows-sip.md new file mode 100644 index 0000000000..9ded656fc8 --- /dev/null +++ b/.changeset/tough-pillows-sip.md @@ -0,0 +1,5 @@ +--- +'@backstage/integration': patch +--- + +Updated functions parseHarnessUrl, getHarnessLatestCommitUrl, getHarnessFileContentsUrl and getHarnessArchiveUrl From abdbde4285a8583326006d3153db82ea7da13884 Mon Sep 17 00:00:00 2001 From: Calvin Lee Date: Sun, 29 Sep 2024 14:08:53 -0700 Subject: [PATCH 3/3] feat: fix issue in repos and parsing Signed-off-by: Calvin Lee --- .changeset/tough-pillows-sip.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/tough-pillows-sip.md b/.changeset/tough-pillows-sip.md index 9ded656fc8..aea3e2d5a0 100644 --- a/.changeset/tough-pillows-sip.md +++ b/.changeset/tough-pillows-sip.md @@ -2,4 +2,4 @@ '@backstage/integration': patch --- -Updated functions parseHarnessUrl, getHarnessLatestCommitUrl, getHarnessFileContentsUrl and getHarnessArchiveUrl +Updated functions parseHarnessUrl, getHarnessLatestCommitUrl, getHarnessFileContentsUrl and getHarnessArchiveUrl to fix parsing of urls