Skip to content
Snippets Groups Projects
Commit 88d10ca5 authored by michael.minelli's avatar michael.minelli
Browse files

Transfert some config to clients shared module

parent 34299426
No related branches found
No related tags found
No related merge requests found
Pipeline #25573 passed
import { Command } from 'commander'; import { Command } from 'commander';
import Config from '../config/Config';
import EnonceCommand from './enonce/EnonceCommand'; import EnonceCommand from './enonce/EnonceCommand';
import SessionCommand from './session/SessionCommand'; import SessionCommand from './session/SessionCommand';
import ExerciceCommand from './exercice/ExerciceCommand'; import ExerciceCommand from './exercice/ExerciceCommand';
import ClientsSharedConfig from '../sharedByClients/config/ClientsSharedConfig';
class CommanderApp { class CommanderApp {
...@@ -19,10 +19,10 @@ class CommanderApp { ...@@ -19,10 +19,10 @@ class CommanderApp {
sortOptions : true, sortOptions : true,
sortSubcommands : true sortSubcommands : true
}) })
.option('-H, --host <string>', 'override the Dojo API endpoint', Config.apiURL); .option('-H, --host <string>', 'override the Dojo API endpoint', ClientsSharedConfig.apiURL);
this.program.on('option:host', () => { this.program.on('option:host', () => {
Config.apiURL = this.program.opts().host; ClientsSharedConfig.apiURL = this.program.opts().host;
}); });
this.registerCommands(); this.registerCommands();
......
...@@ -2,28 +2,11 @@ import getAppDataPath from 'appdata-path'; ...@@ -2,28 +2,11 @@ import getAppDataPath from 'appdata-path';
class Config { class Config {
public apiURL: string;
public gitlab: {
apiURL: string
dojoAccount: { id: number; username: string; };
};
public readonly localConfig: { public readonly localConfig: {
folder: string; file: string; folder: string; file: string;
}; };
constructor() { constructor() {
this.apiURL = process.env.API_URL || '';
this.gitlab = {
apiURL : process.env.GITLAB_API_URL || '',
dojoAccount: {
id : Number(process.env.GITLAB_DOJO_ACCOUNT_ID) || -1,
username: process.env.GITLAB_DOJO_ACCOUNT_USERNAME || ''
}
};
this.localConfig = { this.localConfig = {
folder: getAppDataPath('DojoCLI'), folder: getAppDataPath('DojoCLI'),
file : process.env.LOCAL_CONFIG_FILE || '' file : process.env.LOCAL_CONFIG_FILE || ''
......
import axios, { AxiosError } from 'axios'; import axios, { AxiosError } from 'axios';
import Config from '../config/Config';
import ora from 'ora'; import ora from 'ora';
import ApiRoutes from '../sharedByClients/types/ApiRoutes'; import ApiRoutes from '../sharedByClients/types/ApiRoutes';
import { StatusCodes } from 'http-status-codes'; import { StatusCodes } from 'http-status-codes';
...@@ -7,11 +6,12 @@ import Enonce from '../sharedByClients/models/Enonce'; ...@@ -7,11 +6,12 @@ import Enonce from '../sharedByClients/models/Enonce';
import GitlabUser from '../shared/types/Gitlab/GitlabUser'; import GitlabUser from '../shared/types/Gitlab/GitlabUser';
import Exercice from '../sharedByClients/models/Exercice'; import Exercice from '../sharedByClients/models/Exercice';
import DojoResponse from '../shared/types/DojoResponse'; import DojoResponse from '../shared/types/DojoResponse';
import ClientsSharedConfig from '../sharedByClients/config/ClientsSharedConfig';
class DojoBackendManager { class DojoBackendManager {
public getApiUrl(route: ApiRoutes): string { public getApiUrl(route: ApiRoutes): string {
return `${ Config.apiURL }${ route }`; return `${ ClientsSharedConfig.apiURL }${ route }`;
} }
public async getEnonce(nameOrUrl: string): Promise<Enonce | undefined> { public async getEnonce(nameOrUrl: string): Promise<Enonce | undefined> {
...@@ -43,9 +43,9 @@ class DojoBackendManager { ...@@ -43,9 +43,9 @@ class DojoBackendManager {
if ( error instanceof AxiosError ) { if ( error instanceof AxiosError ) {
if ( error.response ) { if ( error.response ) {
if ( error.response.status === StatusCodes.NOT_FOUND ) { if ( error.response.status === StatusCodes.NOT_FOUND ) {
spinner.fail(`Template not found or access denied. Please check the template ID or url. Also, please check that the template have public/internal visibility or that your and Dojo account (${ Config.gitlab.dojoAccount.username }) have at least reporter role to the template (if private).`); spinner.fail(`Template not found or access denied. Please check the template ID or url. Also, please check that the template have public/internal visibility or that your and Dojo account (${ ClientsSharedConfig.gitlab.dojoAccount.username }) have at least reporter role to the template (if private).`);
} else if ( error.response.status === StatusCodes.UNAUTHORIZED ) { } else if ( error.response.status === StatusCodes.UNAUTHORIZED ) {
spinner.fail(`Please check that the template have public/internal visibility or that your and Dojo account (${ Config.gitlab.dojoAccount.username }) have at least reporter role to the template (if private).`); spinner.fail(`Please check that the template have public/internal visibility or that your and Dojo account (${ ClientsSharedConfig.gitlab.dojoAccount.username }) have at least reporter role to the template (if private).`);
} else { } else {
spinner.fail(`Template error: ${ error.response.statusText }`); spinner.fail(`Template error: ${ error.response.statusText }`);
} }
......
import LocalConfig from '../config/LocalConfig'; import LocalConfig from '../config/LocalConfig';
import LocalConfigKeys from '../types/LocalConfigKeys'; import LocalConfigKeys from '../types/LocalConfigKeys';
import axios from 'axios'; import axios from 'axios';
import Config from '../config/Config';
import ora from 'ora'; import ora from 'ora';
import GitlabUser from '../shared/types/Gitlab/GitlabUser'; import GitlabUser from '../shared/types/Gitlab/GitlabUser';
import GitlabRoutes from '../shared/types/Gitlab/GitlabRoutes'; import GitlabRoutes from '../shared/types/Gitlab/GitlabRoutes';
import ClientsSharedConfig from '../sharedByClients/config/ClientsSharedConfig';
class GitlabManager { class GitlabManager {
private _token: string | null = null; private _token: string | null = null;
private getApiUrl(route: GitlabRoutes): string { private getApiUrl(route: GitlabRoutes): string {
return `${ Config.gitlab.apiURL }${ route }`; return `${ ClientsSharedConfig.gitlab.apiURL }${ route }`;
} }
get isLogged(): boolean { get isLogged(): boolean {
......
import axios, { AxiosRequestHeaders } from 'axios'; import axios, { AxiosRequestHeaders } from 'axios';
import Config from '../config/Config';
import SessionManager from './SessionManager'; import SessionManager from './SessionManager';
import FormData from 'form-data'; import FormData from 'form-data';
import logger from '../shared/logging/WinstonLogger'; import logger from '../shared/logging/WinstonLogger';
import GitlabManager from './GitlabManager'; import GitlabManager from './GitlabManager';
import { StatusCodes } from 'http-status-codes'; import { StatusCodes } from 'http-status-codes';
import ClientsSharedConfig from '../sharedByClients/config/ClientsSharedConfig';
class HttpManager { class HttpManager {
...@@ -21,7 +21,7 @@ class HttpManager { ...@@ -21,7 +21,7 @@ class HttpManager {
config.headers = { ...config.headers, ...(config.data as FormData).getHeaders() } as AxiosRequestHeaders; config.headers = { ...config.headers, ...(config.data as FormData).getHeaders() } as AxiosRequestHeaders;
} }
if ( config.url && (config.url.indexOf(Config.apiURL) !== -1) ) { if ( config.url && (config.url.indexOf(ClientsSharedConfig.apiURL) !== -1) ) {
if ( config.data && Object.keys(config.data).length > 0 ) { if ( config.data && Object.keys(config.data).length > 0 ) {
config.headers['Content-Type'] = 'multipart/form-data'; config.headers['Content-Type'] = 'multipart/form-data';
} }
...@@ -31,7 +31,7 @@ class HttpManager { ...@@ -31,7 +31,7 @@ class HttpManager {
} }
} }
if ( GitlabManager.isLogged && config.url && config.url.indexOf(Config.gitlab.apiURL) !== -1 ) { if ( GitlabManager.isLogged && config.url && config.url.indexOf(ClientsSharedConfig.gitlab.apiURL) !== -1 ) {
config.headers['PRIVATE-TOKEN'] = GitlabManager.token; config.headers['PRIVATE-TOKEN'] = GitlabManager.token;
} }
...@@ -49,7 +49,7 @@ class HttpManager { ...@@ -49,7 +49,7 @@ class HttpManager {
}, (error) => { }, (error) => {
if ( error.response ) { if ( error.response ) {
if ( this.handleCommandErrors ) { if ( this.handleCommandErrors ) {
if ( error.response.url && error.response.url.indexOf(Config.apiURL) !== -1 ) { if ( error.response.url && error.response.url.indexOf(ClientsSharedConfig.apiURL) !== -1 ) {
switch ( error.response.status ) { switch ( error.response.status ) {
case StatusCodes.UNAUTHORIZED: // Unauthorized case StatusCodes.UNAUTHORIZED: // Unauthorized
logger.error('Session expired or inexistent. Please login again.'); logger.error('Session expired or inexistent. Please login again.');
......
Subproject commit 3cd4b0c0e18fb8e8f52062cf4b171c8c67d4baea Subproject commit 8fe8e9417a527cf2182a9acc440e68b99024487e
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment