diff --git a/managers/SharedGitlabManager.ts b/managers/SharedGitlabManager.ts index a3a00204ea7a6a5cc761209fbac27a6632271620..e55fbcb7c264c29e433c31f60be53310e210f443 100644 --- a/managers/SharedGitlabManager.ts +++ b/managers/SharedGitlabManager.ts @@ -2,6 +2,7 @@ import axios from 'axios'; import GitlabPipeline from '../types/Gitlab/GitlabPipeline'; import GitlabRoute from '../types/Gitlab/GitlabRoute'; import SharedConfig from '../config/SharedConfig'; +import GitlabToken from '../types/Gitlab/GitlabToken'; class GitlabManager { @@ -9,6 +10,19 @@ class GitlabManager { return `${ SharedConfig.gitlab.apiURL }${ route }`; } + async getTokens(codeOrRefresh: string, isRefresh: boolean = false, clientSecret: string = ''): Promise<GitlabToken> { + const response = await axios.post<GitlabToken>(`${ SharedConfig.gitlab.URL }/oauth/token`, { + client_id : SharedConfig.login.gitlab.client.id, + client_secret: clientSecret, + grant_type : isRefresh ? 'refresh_token' : 'authorization_code', + refresh_token: codeOrRefresh, + code : codeOrRefresh, + redirect_uri : SharedConfig.login.gitlab.url.redirect + }); + + return response.data; + } + 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: { diff --git a/types/Gitlab/GitlabToken.ts b/types/Gitlab/GitlabToken.ts new file mode 100644 index 0000000000000000000000000000000000000000..c8c647e6285cf626b155d7ff93beb0dd2c7f9d52 --- /dev/null +++ b/types/Gitlab/GitlabToken.ts @@ -0,0 +1,11 @@ +interface GitlabToken { + access_token: string; + token_type: string; + expires_in: number; + refresh_token: string; + scope: string; + created_at: number; +} + + +export default GitlabToken; \ No newline at end of file