diff --git a/ExpressAPI/src/managers/GitlabManager.ts b/ExpressAPI/src/managers/GitlabManager.ts index 096161b7087789b45ed5797e4202dca44d0d546d..8809faa24c54ac9004e5489f851509c8297d205d 100644 --- a/ExpressAPI/src/managers/GitlabManager.ts +++ b/ExpressAPI/src/managers/GitlabManager.ts @@ -69,6 +69,12 @@ class GitlabManager { return response.data; } + async getRepositoryDirectMembers(idOrNamespace: string): Promise<Array<GitlabMember>> { + const response = await axios.get<Array<GitlabMember>>(this.getApiUrl(GitlabRoute.REPOSITORY_DIRECT_MEMBERS_GET).replace('{{id}}', encodeURIComponent(idOrNamespace))); + + return response.data; + } + async getRepositoryReleases(repoId: number): Promise<Array<GitlabRelease>> { const response = await axios.get<Array<GitlabRelease>>(this.getApiUrl(GitlabRoute.REPOSITORY_RELEASES_GET).replace('{{id}}', String(repoId))); diff --git a/ExpressAPI/src/routes/AssignmentRoutes.ts b/ExpressAPI/src/routes/AssignmentRoutes.ts index 0cdda907cba31b9873d68b41d42ae98102a24ed0..b5fbd848f7496344ec470a618252e536c4a9ccd8 100644 --- a/ExpressAPI/src/routes/AssignmentRoutes.ts +++ b/ExpressAPI/src/routes/AssignmentRoutes.ts @@ -225,17 +225,25 @@ class AssignmentRoutes implements RoutesManager { return req.session.sendResponse(res, StatusCodes.NOT_FOUND); } - const members = await GitlabManager.getRepositoryMembers(String(repo['gitlabId'])); + // const members = await GitlabManager.getRepositoryMembers(String(repo['gitlabId'])); + const members = await GitlabManager.getRepositoryDirectMembers(String(repo['gitlabId'])); members.forEach(async member => { if ( member.id !== Config.gitlab.account.id ) { - await GitlabManager.removeRepositoryMember(repo['gitlabId'], member.id); + logger.debug(`${member.name} : ${member.id}`); + try { + await GitlabManager.removeRepositoryMember(repo['gitlabId'], member.id); + } catch (error) { + logger.error(`Error while removing members ${member.id} with this error : ${error}`); + } } }); - await GitlabManager.moveRepositorySubGroup(repo['gitlabId'], 14193); - - // recup l'id du repo en question - await GitlabManager.removeRepositoryMember(repo['gitlabId'], 627); + try { + await GitlabManager.moveRepositorySubGroup(repo['gitlabId'], 14193); + logger.debug("Repo was successfully move"); + } catch (error) { + logger.debug(`Error while moving the repo to "deleted" with the error : ${error}`); + } await db.assignment.update({ where : { diff --git a/ExpressAPI/src/shared/types/Gitlab/GitlabRoute.ts b/ExpressAPI/src/shared/types/Gitlab/GitlabRoute.ts index ade585291e20343b0a272d716bf1d9d508da8f02..4485f38e3d224e8a169e5c682a929e58424689ed 100644 --- a/ExpressAPI/src/shared/types/Gitlab/GitlabRoute.ts +++ b/ExpressAPI/src/shared/types/Gitlab/GitlabRoute.ts @@ -1,23 +1,24 @@ enum GitlabRoute { - NOTIFICATION_SETTINGS = '/notification_settings', - PROFILE_GET = '/user', - USERS_GET = '/users', - REPOSITORY_GET = '/projects/{{id}}', - REPOSITORY_CREATE = '/projects', // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values - REPOSITORY_DELETE = '/projects/{{id}}', // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values - REPOSITORY_EDIT = '/projects/{{id}}', - REPOSITORY_FORK = '/projects/{{id}}/fork', - REPOSITORY_MEMBER_ADD = '/projects/{{id}}/members', - REPOSITORY_MEMBERS_GET = '/projects/{{id}}/members/all', - REPOSITORY_RELEASES_GET = '/projects/{{id}}/releases', - REPOSITORY_BADGES_ADD = '/projects/{{id}}/badges', - REPOSITORY_VARIABLES_ADD = '/projects/{{id}}/variables', - REPOSITORY_BRANCHES_PROTECT = '/projects/{{id}}/protected_branches', - REPOSITORY_TREE = '/projects/{{id}}/repository/tree', - REPOSITORY_FILE = '/projects/{{id}}/repository/files/{{filePath}}', - REPOSITORY_PIPELINES = '/projects/{{id}}/pipelines', - REPOSITORY_MEMBER_DELETE = '/projects/{{id}}/members/{{user_id}}', - REPOSITORY_MOVE_SUBGROUP = '/projects/{{id}}/transfer', + NOTIFICATION_SETTINGS = '/notification_settings', + PROFILE_GET = '/user', + USERS_GET = '/users', + REPOSITORY_GET = '/projects/{{id}}', + REPOSITORY_CREATE = '/projects', // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values + REPOSITORY_DELETE = '/projects/{{id}}', // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values + REPOSITORY_EDIT = '/projects/{{id}}', + REPOSITORY_FORK = '/projects/{{id}}/fork', + REPOSITORY_MEMBER_ADD = '/projects/{{id}}/members', + REPOSITORY_MEMBERS_GET = '/projects/{{id}}/members/all', + REPOSITORY_DIRECT_MEMBERS_GET = '/projects/{{id}}/members', + REPOSITORY_RELEASES_GET = '/projects/{{id}}/releases', + REPOSITORY_BADGES_ADD = '/projects/{{id}}/badges', + REPOSITORY_VARIABLES_ADD = '/projects/{{id}}/variables', + REPOSITORY_BRANCHES_PROTECT = '/projects/{{id}}/protected_branches', + REPOSITORY_TREE = '/projects/{{id}}/repository/tree', + REPOSITORY_FILE = '/projects/{{id}}/repository/files/{{filePath}}', + REPOSITORY_PIPELINES = '/projects/{{id}}/pipelines', + REPOSITORY_MEMBER_DELETE = '/projects/{{id}}/members/{{user_id}}', + REPOSITORY_MOVE_SUBGROUP = '/projects/{{id}}/transfer', }