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';
import User from '../models/User';
import Enonce from '../models/Enonce';
import EnonceStaff from '../models/EnonceStaff';
import { AxiosError } from 'axios';
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> => {
try {
return await GitlabHelper.addRepositoryMember(repository.id, memberId, GitlabAccessLevel.Maintainer);
......@@ -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