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

EnonceRoutes => Creation error handling

parent 01805df0
No related branches found
No related tags found
No related merge requests found
...@@ -17,6 +17,7 @@ import UserManager from '../managers/UserManager'; ...@@ -17,6 +17,7 @@ import UserManager from '../managers/UserManager';
import User from '../models/User'; import User from '../models/User';
import Enonce from '../models/Enonce'; import Enonce from '../models/Enonce';
import EnonceStaff from '../models/EnonceStaff'; import EnonceStaff from '../models/EnonceStaff';
import { AxiosError } from 'axios';
class EnonceRoutes implements RoutesManager { class EnonceRoutes implements RoutesManager {
...@@ -68,7 +69,22 @@ class EnonceRoutes implements RoutesManager { ...@@ -68,7 +69,22 @@ class EnonceRoutes implements RoutesManager {
} }
} }
const repository: GitlabRepository = await GitlabHelper.createRepository(params.name, Config.enonce.default.description.replace('{{ENONCE_NAME}}', params.name), Config.enonce.default.visibility, Config.enonce.default.initReadme, Config.gitlab.group.enonces, Config.enonce.default.sharedRunnersEnabled, Config.enonce.default.wikiEnabled, template); let repository: GitlabRepository;
try {
repository = await GitlabHelper.createRepository(params.name, Config.enonce.default.description.replace('{{ENONCE_NAME}}', params.name), Config.enonce.default.visibility, Config.enonce.default.initReadme, Config.gitlab.group.enonces, Config.enonce.default.sharedRunnersEnabled, Config.enonce.default.wikiEnabled, template);
} catch ( error ) {
if ( error instanceof AxiosError ) {
if ( error.response.data.message.name && error.response.data.message.name == 'has already been taken' ) {
return res.status(StatusCodes.CONFLICT).send();
}
return res.status(error.response.status).send();
}
return res.status(StatusCodes.INTERNAL_SERVER_ERROR).send();
}
try {
const members: Array<GitlabMember | false> = await Promise.all([ req.session.profile.userGitlabId, ...gitlabMembers.map(member => member.id) ].map(async (memberId: number): Promise<GitlabMember | false> => { const members: Array<GitlabMember | false> = await Promise.all([ req.session.profile.userGitlabId, ...gitlabMembers.map(member => member.id) ].map(async (memberId: number): Promise<GitlabMember | false> => {
try { try {
return await GitlabHelper.addRepositoryMember(repository.id, memberId, GitlabAccessLevel.Maintainer); return await GitlabHelper.addRepositoryMember(repository.id, memberId, GitlabAccessLevel.Maintainer);
...@@ -96,7 +112,14 @@ class EnonceRoutes implements RoutesManager { ...@@ -96,7 +112,14 @@ class EnonceRoutes implements RoutesManager {
}); });
})); }));
req.session.sendResponse(res, StatusCodes.OK, enonce.toJsonObject()); return req.session.sendResponse(res, StatusCodes.OK, enonce.toJsonObject());
} catch ( error ) {
if ( error instanceof AxiosError ) {
return res.status(error.response.status).send();
}
return res.status(StatusCodes.INTERNAL_SERVER_ERROR).send();
}
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment