Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • jw_sonar
  • jw_sonar_backup
  • main
  • move-to-esm-only
  • open_tool_for_self_hosting
  • v5.0
  • v4.1
  • v4.2
8 results

Target

Select target project
  • dojo_project/projects/shared/nodesharedcode
1 result
Select Git revision
  • jw_sonar
  • jw_sonar_backup
  • main
  • move-to-esm-only
  • open_tool_for_self_hosting
  • v5.0
  • v4.1
  • v4.2
8 results
Show changes
Commits on Source (5)
......@@ -4,42 +4,11 @@ class SharedConfig {
public readonly logsFolder: string;
public gitlab: {
URL: string, apiURL: string
};
public readonly login: {
gitlab: {
client: {
id: string
}, url: {
redirect: string, token: string
}
}
};
constructor() {
this.production = process.env.NODE_ENV === 'production';
this.logsFolder = process.env.LOGS_FOLDER ?? '';
this.gitlab = {
URL : process.env.GITLAB_URL ?? '',
apiURL: process.env.GITLAB_API_URL ?? ''
};
this.login = {
gitlab: {
client: {
id: process.env.LOGIN_GITLAB_CLIENT_ID ?? ''
},
url : {
redirect: process.env.LOGIN_GITLAB_URL_REDIRECT ?? '',
token : process.env.LOGIN_GITLAB_URL_TOKEN ?? ''
}
}
};
}
}
......
......@@ -3,10 +3,16 @@ import DojoStatusCode from '../../types/Dojo/DojoStatusCode.js';
import Json5FileValidator from '../Json5FileValidator.js';
import * as Gitlab from '@gitbeaker/rest';
import GitlabPipelineStatus from '../../types/Gitlab/GitlabPipelineStatus.js';
import GitlabManager from '../../../managers/GitlabManager.js';
import SharedGitlabManager from '../../managers/SharedGitlabManager';
class SharedAssignmentHelper {
private gitlabManager!: SharedGitlabManager;
init(gitlabManager: SharedGitlabManager) {
this.gitlabManager = gitlabManager;
}
validateDescriptionFile(filePathOrStr: string, isFile: boolean = true, version: number = 1): { content: AssignmentFile | undefined, isValid: boolean, error: string | null } {
if ( version === 1 ) {
return Json5FileValidator.validateFile(AssignmentFile, filePathOrStr, isFile);
......@@ -20,7 +26,7 @@ class SharedAssignmentHelper {
}
async isPublishable(repositoryId: number): Promise<{ isPublishable: boolean, lastPipeline: Gitlab.PipelineSchema | null, status?: { code: DojoStatusCode, message: string } }> {
const pipelines = await GitlabManager.getRepositoryPipelines(repositoryId, 'main');
const pipelines = await this.gitlabManager.getRepositoryPipelines(repositoryId, 'main');
if ( pipelines.length > 0 ) {
const lastPipeline = pipelines[0];
if ( lastPipeline.status !== GitlabPipelineStatus.SUCCESS.valueOf() ) {
......
import axios from 'axios';
import SharedConfig from '../config/SharedConfig.js';
import * as GitlabCore from '@gitbeaker/core';
import { GitbeakerRequestError } from '@gitbeaker/requester-utils';
import { Gitlab, PipelineSchema, ProjectSchema, UserSchema } from '@gitbeaker/rest';
......@@ -12,11 +11,11 @@ class SharedGitlabManager {
setToken(token: string) {
this.api = new Gitlab(Object.assign({
host: SharedConfig.gitlab.URL
host: this.gitlabUrl ?? ''
}, this.refreshTokenFunction ? { oauthToken: token } : { token: token }));
}
constructor(token: string, refreshTokenFunction?: () => Promise<string>) {
constructor(public gitlabUrl: string, token: string, public clientId?: string, public urlRedirect?: string, public urlToken?: string, refreshTokenFunction?: () => Promise<string>) {
this.refreshTokenFunction = refreshTokenFunction;
this.setToken(token);
}
......@@ -36,13 +35,17 @@ class SharedGitlabManager {
}
async getTokens(codeOrRefresh: string, isRefresh: boolean = false, clientSecret: string = ''): Promise<GitlabToken> {
const response = await axios.post<GitlabToken>(SharedConfig.login.gitlab.url.token, {
client_id : SharedConfig.login.gitlab.client.id,
if ( !this.urlToken ) {
throw new Error('Error when initializing GitlabManager');
}
const response = await axios.post<GitlabToken>(this.urlToken, {
client_id : this.clientId,
client_secret: clientSecret,
grant_type : isRefresh ? 'refresh_token' : 'authorization_code',
refresh_token: codeOrRefresh,
code : codeOrRefresh,
redirect_uri : SharedConfig.login.gitlab.url.redirect
redirect_uri : this.urlRedirect
});
return response.data;
......