diff --git a/src/api/v1/repoBranches.ts b/src/api/v1/repoBranches.ts deleted file mode 100644 index 154a3c798..000000000 --- a/src/api/v1/repoBranches.ts +++ /dev/null @@ -1,15 +0,0 @@ -import Debug from 'debug' -import { Response } from 'express' -import { OpenApiRequestExt } from 'src/otomi-models' - -const debug = Debug('otomi:api:repoBranches') - -/** - * GET /v1/repoBranches - * Get repository branches - */ -export const getRepoBranches = async (req: OpenApiRequestExt, res: Response): Promise => { - debug('getRepoBranches', req.query) - const { codeRepoName, teamId } = req.query as { codeRepoName: string; teamId: string } - res.json(await req.otomi.getRepoBranches(codeRepoName, teamId)) -} diff --git a/src/api/v2/teams/{teamId}/coderepos/{codeRepositoryName}/branches.ts b/src/api/v2/teams/{teamId}/coderepos/{codeRepositoryName}/branches.ts new file mode 100644 index 000000000..0f5ad8f62 --- /dev/null +++ b/src/api/v2/teams/{teamId}/coderepos/{codeRepositoryName}/branches.ts @@ -0,0 +1,22 @@ +import Debug from 'debug' +import { Response } from 'express' +import { OpenApiRequestExt } from 'src/otomi-models' + +const debug = Debug('otomi:api:v2:repoBranches') + +/** + * GET /v2/teams/{teamId}/coderepos/{codeRepositoryName}/branches + * Get repository branches + */ +export const getRepoBranches = async (req: OpenApiRequestExt, res: Response): Promise => { + debug('getRepoBranches', req.params) + + const { teamId, codeRepositoryName } = req.params as { + teamId: string + codeRepositoryName: string + } + + const branches = await req.otomi.getRepoBranches(codeRepositoryName, teamId) + + res.json(branches) +} diff --git a/src/openapi/api.yaml b/src/openapi/api.yaml index b85073b69..6399552ad 100644 --- a/src/openapi/api.yaml +++ b/src/openapi/api.yaml @@ -2696,23 +2696,15 @@ paths: schema: $ref: '#/components/schemas/SettingsInfo' - /v1/repoBranches: + /v2/teams/{teamId}/coderepos/{codeRepositoryName}/branches: + parameters: + - $ref: '#/components/parameters/teamParams' + - $ref: '#/components/parameters/codeRepoParams' get: operationId: getRepoBranches - x-eov-operation-handler: v1/repoBranches + x-eov-operation-handler: v2/teams/{teamId}/coderepos/{codeRepositoryName}/branches description: Get repo branches from the git providers. - x-aclSchema: RepoBranches - parameters: - - name: codeRepoName - in: query - description: Name of the code repository - schema: - type: string - - name: teamId - in: query - description: Id of the team - schema: - type: string + x-aclSchema: CodeRepo responses: '200': description: The request is successful. @@ -2722,6 +2714,12 @@ paths: type: array items: type: string + '400': + $ref: '#/components/responses/BadRequest' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' /v1/testRepoConnect: get: diff --git a/src/otomi-stack.ts b/src/otomi-stack.ts index f8ba9728a..4d0870e84 100644 --- a/src/otomi-stack.ts +++ b/src/otomi-stack.ts @@ -1465,13 +1465,16 @@ export default class OtomiStack { async getRepoBranches(codeRepoName: string, teamId: string): Promise { if (!codeRepoName) return ['HEAD'] - const coderepo = this.getCodeRepo(teamId, codeRepoName) - const { repositoryUrl, secret: secretName } = coderepo + + const coderepo = this.getAplCodeRepo(teamId, codeRepoName) + const { repositoryUrl, secret: secretName } = coderepo.spec + const { cluster } = await this.getSettings(['cluster']) + try { - let sshPrivateKey = '', - username = '', - accessToken = '' + let sshPrivateKey = '' + let username = '' + let accessToken = '' if (secretName) { const secret = await getSecretValues(secretName, `team-${teamId}`) @@ -1489,7 +1492,9 @@ export default class OtomiStack { if (!repoUrl) return ['HEAD'] - if (isPrivate) return await getPrivateRepoBranches(repoUrl, sshPrivateKey, username, accessToken) + if (isPrivate) { + return await getPrivateRepoBranches(repoUrl, sshPrivateKey, username, accessToken) + } return await getPublicRepoBranches(repoUrl) } catch (error) {