From f1412da0082bd1feb45d9e976040428cbe568514 Mon Sep 17 00:00:00 2001 From: mo Date: Fri, 29 Apr 2022 07:57:13 -0500 Subject: [PATCH] Added git-tags/ route to server. Client now calls /git-tags/ Signed-off-by: mo --- .../src/api/AzureDevOpsApi.ts | 32 +++++++++++++++++++ .../src/service/router.ts | 23 +++++++++++++ .../azure-devops/src/api/AzureDevOpsClient.ts | 2 +- 3 files changed, 56 insertions(+), 1 deletion(-) diff --git a/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts b/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts index ff63af183e..b8667db0f0 100644 --- a/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts +++ b/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts @@ -123,6 +123,38 @@ export class AzureDevOpsApi { return repoBuilds; } + public async getGitTags( + projectName: string, + repoName: string, + options: PullRequestOptions, + ): Promise { + this.logger?.debug( + `Calling Azure DevOps REST API, getting up to ${options.top} Pull Requests for Repository ${repoName} for Project ${projectName}`, + ); + + const gitRepository = await this.getGitRepository(projectName, repoName); + const client = await this.webApi.getGitApi(); + const searchCriteria: GitPullRequestSearchCriteria = { + status: options.status, + }; + const gitPullRequests = await client.getPullRequests( + gitRepository.id as string, + searchCriteria, + projectName, + undefined, + undefined, + options.top, + ); + const linkBaseUrl = `${this.webApi.serverUrl}/${encodeURIComponent( + projectName, + )}/_git/${encodeURIComponent(repoName)}/pullrequest`; + const pullRequests: PullRequest[] = gitPullRequests.map(gitPullRequest => { + return mappedPullRequest(gitPullRequest, linkBaseUrl); + }); + + return pullRequests; + } + public async getPullRequests( projectName: string, repoName: string, diff --git a/plugins/azure-devops-backend/src/service/router.ts b/plugins/azure-devops-backend/src/service/router.ts index f41209e4ff..e810ca87db 100644 --- a/plugins/azure-devops-backend/src/service/router.ts +++ b/plugins/azure-devops-backend/src/service/router.ts @@ -97,6 +97,29 @@ export async function createRouter( res.status(200).json(gitRepository); }); + router.get('/git-tags/:projectName/:repoName', async (req, res) => { + const { projectName, repoName } = req.params; + + const top = req.query.top ? Number(req.query.top) : DEFAULT_TOP; + + const status = req.query.status + ? Number(req.query.status) + : PullRequestStatus.Active; + + const pullRequestOptions: PullRequestOptions = { + top: top, + status: status, + }; + + const gitPullRequest = await azureDevOpsApi.getGitTags( + projectName, + repoName, + pullRequestOptions, + ); + + res.status(200).json(gitPullRequest); + }); + router.get('/pull-requests/:projectName/:repoName', async (req, res) => { const { projectName, repoName } = req.params; diff --git a/plugins/azure-devops/src/api/AzureDevOpsClient.ts b/plugins/azure-devops/src/api/AzureDevOpsClient.ts index e25ea1e457..4ebb72fcf9 100644 --- a/plugins/azure-devops/src/api/AzureDevOpsClient.ts +++ b/plugins/azure-devops/src/api/AzureDevOpsClient.ts @@ -70,7 +70,7 @@ export class AzureDevOpsClient implements AzureDevOpsApi { if (options?.status) { queryString.append('status', options.status.toString()); } - const urlSegment = `pull-requests/${encodeURIComponent( + const urlSegment = `git-tags/${encodeURIComponent( projectName, )}/${encodeURIComponent(repoName)}?${queryString}`;