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
Branches
Tags
No related merge requests found
Pipeline #25199 passed
...@@ -42,46 +42,47 @@ class EnonceCreateCommand extends CommanderCommand { ...@@ -42,46 +42,47 @@ class EnonceCreateCommand extends CommanderCommand {
} }
private async fetchMembers(options: any): Promise<Array<GitlabUser> | false> { 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 ]; ora('Checking Gitlab members:').start().info();
const spinner: ora.Ora = ora('Checking Gitlab members: Fetching members by id...').start();
let members: Array<GitlabUser> = []; let members: Array<GitlabUser> = [];
async function getMembers<T>(context: any, functionName: string, paramsToSearch: Array<T>, spinner: ora.Ora): Promise<boolean> { async function getMembers<T>(context: any, functionName: string, paramsToSearch: Array<T>): Promise<boolean> {
const result = await (context[functionName] as (arg: Array<T>) => Promise<Array<GitlabUser | undefined>>)(paramsToSearch); 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) ) { if ( result.every(user => user) ) {
members = members.concat(result as Array<GitlabUser>); members = members.concat(result as Array<GitlabUser>);
return true; return true;
} else { } 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; return false;
} }
} }
let result = true;
if ( options.members_id ) { if ( options.members_id ) {
spinner.text = 'Checking Gitlab members: Fetching members by id...'; ora({
if ( !await getMembers(GitlabManager, 'getUsersById', options.members_id, spinner) ) { text : 'Fetching members by id:',
return false; indent: 4
} }).start().info();
result = await getMembers(GitlabManager, 'getUsersById', options.members_id);
} }
if ( options.members_username ) { if ( options.members_username ) {
spinner.text = 'Checking Gitlab members: Fetching members by username...'; ora({
if ( !await getMembers(GitlabManager, 'getUsersByUsername', options.members_username, spinner) ) { text : 'Fetching members by username:',
return false; 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>()); 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; return members;
} }
......
...@@ -121,15 +121,31 @@ class GitlabManager { ...@@ -121,15 +121,31 @@ class GitlabManager {
return axios.put(`${ Config.gitlab.apiURL }/notification_settings`, { params: new URLSearchParams(newSettings) }); 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 { try {
return await Promise.all(paramsToSearch.map(async param => { 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 = {}; const params: any = {};
params[paramName] = param; params[paramName] = param;
const user = await axios.get(`${ Config.gitlab.apiURL }/users`, { params: params }); const user = await axios.get(`${ Config.gitlab.apiURL }/users`, { params: params });
if ( user.data[0] ) { 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 ) { } catch ( e ) {
...@@ -137,12 +153,12 @@ class GitlabManager { ...@@ -137,12 +153,12 @@ class GitlabManager {
} }
} }
public async getUsersById(ids: Array<number>): Promise<Array<GitlabUser | undefined>> { public async getUsersById(ids: Array<number>, verbose: boolean = false, verboseIndent: number = 0): Promise<Array<GitlabUser | undefined>> {
return await this.getGitlabUser(ids, 'id'); return await this.getGitlabUser(ids, 'id', verbose, verboseIndent);
} }
public async getUsersByUsername(usernames: Array<string>): Promise<Array<GitlabUser | undefined>> { public async getUsersByUsername(usernames: Array<string>, verbose: boolean = false, verboseIndent: number = 0): Promise<Array<GitlabUser | undefined>> {
return await this.getGitlabUser(usernames, 'search'); return await this.getGitlabUser(usernames, 'search', verbose, verboseIndent);
} }
} }
......
...@@ -46,6 +46,11 @@ class HttpManager { ...@@ -46,6 +46,11 @@ class HttpManager {
} }
if ( SessionManager.isLogged && config.url && config.url.indexOf(Config.apiURL) !== -1 ) { 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; config.headers.Authorization = 'Bearer ' + SessionManager.token;
} }
......
...@@ -57,10 +57,6 @@ class SessionManager { ...@@ -57,10 +57,6 @@ class SessionManager {
const response = await axios.post(HttpManager.LOGIN_URL, { const response = await axios.post(HttpManager.LOGIN_URL, {
user : user, user : user,
password: password password: password
}, {
headers: {
'Content-Type': 'multipart/form-data'
}
}); });
spinner.succeed('Logged in'); 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