From cb40b62d5977cead1eb7e47f9bf8d2614a2923ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <michael@minelli.me> Date: Fri, 13 Oct 2023 15:34:14 +0200 Subject: [PATCH] Add SharedGitlabManager --- config/SharedConfig.ts | 8 ++++++++ managers/SharedGitlabManager.ts | 24 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 managers/SharedGitlabManager.ts diff --git a/config/SharedConfig.ts b/config/SharedConfig.ts index 29c55a2..cbcb181 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 0000000..a3a0020 --- /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(); -- GitLab