diff --git a/config/SharedConfig.ts b/config/SharedConfig.ts index 29c55a2cd2c4edbfdd43dd7834ae06f81da21e13..cbcb181edacf5b5a1f9a86cfdf7943c76fd2d1ca 100644 --- a/config/SharedConfig.ts +++ b/config/SharedConfig.ts @@ -3,11 +3,19 @@ class SharedConfig { public readonly logsFolder: string; + public gitlab: { + apiURL: string + }; + constructor() { this.production = process.env.NODE_ENV === 'production'; this.logsFolder = process.env.LOGS_FOLDER || ''; + + this.gitlab = { + apiURL: process.env.GITLAB_API_URL || '' + }; } } diff --git a/managers/SharedGitlabManager.ts b/managers/SharedGitlabManager.ts new file mode 100644 index 0000000000000000000000000000000000000000..a3a00204ea7a6a5cc761209fbac27a6632271620 --- /dev/null +++ b/managers/SharedGitlabManager.ts @@ -0,0 +1,24 @@ +import axios from 'axios'; +import GitlabPipeline from '../types/Gitlab/GitlabPipeline'; +import GitlabRoute from '../types/Gitlab/GitlabRoute'; +import SharedConfig from '../config/SharedConfig'; + + +class GitlabManager { + private getApiUrl(route: GitlabRoute): string { + return `${ SharedConfig.gitlab.apiURL }${ route }`; + } + + async getRepositoryPipelines(repoId: number, branch: string = 'main'): Promise<Array<GitlabPipeline>> { + const response = await axios.get<Array<GitlabPipeline>>(this.getApiUrl(GitlabRoute.REPOSITORY_PIPELINES).replace('{{id}}', String(repoId)), { + params: { + ref: branch + } + }); + + return response.data; + } +} + + +export default new GitlabManager();