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

EnonceCreate => Increase verify data interface

parent 3b688ca5
No related branches found
No related tags found
No related merge requests found
Pipeline #25199 passed
......@@ -42,46 +42,47 @@ class EnonceCreateCommand extends CommanderCommand {
}
private async fetchMembers(options: any): Promise<Array<GitlabUser> | false> {
options.members_id = options.members_id ? options.members_id.concat([ Config.gitlab.dojoAccountId ]) : [ Config.gitlab.dojoAccountId ];
const spinner: ora.Ora = ora('Checking Gitlab members: Fetching members by id...').start();
ora('Checking Gitlab members:').start().info();
let members: Array<GitlabUser> = [];
async function getMembers<T>(context: any, functionName: string, paramsToSearch: Array<T>, spinner: ora.Ora): Promise<boolean> {
const result = await (context[functionName] as (arg: Array<T>) => Promise<Array<GitlabUser | undefined>>)(paramsToSearch);
async function getMembers<T>(context: any, functionName: string, paramsToSearch: Array<T>): Promise<boolean> {
const result = await (context[functionName] as (arg: Array<T>, verbose: boolean, verboseIndent: number) => Promise<Array<GitlabUser | undefined>>)(paramsToSearch, true, 8);
if ( result.every(user => user) ) {
members = members.concat(result as Array<GitlabUser>);
return true;
} else {
spinner.fail('Checking Gitlab members: Some members were not found : ' + result.map((value, index: number) => {
if ( value === undefined ) {
return paramsToSearch[index];
} else {
return undefined;
}
}).filter((value) => value).join(', ') + '.');
return false;
}
}
let result = true;
if ( options.members_id ) {
spinner.text = 'Checking Gitlab members: Fetching members by id...';
if ( !await getMembers(GitlabManager, 'getUsersById', options.members_id, spinner) ) {
return false;
}
ora({
text : 'Fetching members by id:',
indent: 4
}).start().info();
result = await getMembers(GitlabManager, 'getUsersById', options.members_id);
}
if ( options.members_username ) {
spinner.text = 'Checking Gitlab members: Fetching members by username...';
if ( !await getMembers(GitlabManager, 'getUsersByUsername', options.members_username, spinner) ) {
return false;
ora({
text : 'Fetching members by username:',
indent: 4
}).start().info();
result = result && await getMembers(GitlabManager, 'getUsersByUsername', options.members_username);
}
if ( !result ) {
return false;
}
members = members.reduce((unique, user) => (unique.findIndex(uniqueUser => uniqueUser.id === user.id) !== -1 ? unique : [ ...unique, user ]), Array<GitlabUser>());
spinner.succeed('Checking Gitlab members: All members were found.');
return members;
}
......
......@@ -121,15 +121,31 @@ class GitlabManager {
return axios.put(`${ Config.gitlab.apiURL }/notification_settings`, { params: new URLSearchParams(newSettings) });
}
private async getGitlabUser(paramsToSearch: Array<string | number>, paramName: string): Promise<Array<GitlabUser | undefined>> {
private async getGitlabUser(paramsToSearch: Array<string | number>, paramName: string, verbose: boolean = false, verboseIndent: number = 0): Promise<Array<GitlabUser | undefined>> {
try {
return await Promise.all(paramsToSearch.map(async param => {
const spinner: ora.Ora = ora({
text : `Getting user ${ param }`,
indent: verboseIndent
});
if ( verbose ) {
spinner.start();
}
const params: any = {};
params[paramName] = param;
const user = await axios.get(`${ Config.gitlab.apiURL }/users`, { params: params });
if ( user.data[0] ) {
return GitlabUser.createFromJson(user.data[0]);
const gitlabUser = GitlabUser.createFromJson(user.data[0]);
if ( verbose ) {
spinner.succeed(`${ gitlabUser.username } (${ gitlabUser.id })`);
}
return gitlabUser;
} else {
if ( verbose ) {
spinner.fail(`${ param }`);
}
}
}));
} catch ( e ) {
......@@ -137,12 +153,12 @@ class GitlabManager {
}
}
public async getUsersById(ids: Array<number>): Promise<Array<GitlabUser | undefined>> {
return await this.getGitlabUser(ids, 'id');
public async getUsersById(ids: Array<number>, verbose: boolean = false, verboseIndent: number = 0): Promise<Array<GitlabUser | undefined>> {
return await this.getGitlabUser(ids, 'id', verbose, verboseIndent);
}
public async getUsersByUsername(usernames: Array<string>): Promise<Array<GitlabUser | undefined>> {
return await this.getGitlabUser(usernames, 'search');
public async getUsersByUsername(usernames: Array<string>, verbose: boolean = false, verboseIndent: number = 0): Promise<Array<GitlabUser | undefined>> {
return await this.getGitlabUser(usernames, 'search', verbose, verboseIndent);
}
}
......
......@@ -46,6 +46,11 @@ class HttpManager {
}
if ( SessionManager.isLogged && config.url && config.url.indexOf(Config.apiURL) !== -1 ) {
config.headers = {
...config.headers,
'Content-Type': 'multipart/form-data'
} as AxiosRequestHeaders;
config.headers.Authorization = 'Bearer ' + SessionManager.token;
}
......
......@@ -57,10 +57,6 @@ class SessionManager {
const response = await axios.post(HttpManager.LOGIN_URL, {
user : user,
password: password
}, {
headers: {
'Content-Type': 'multipart/form-data'
}
});
spinner.succeed('Logged in');
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment