1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-12-22 19:07:54 +01:00
unleash.unleash/lib/routes/admin-api/util.js

57 lines
1.4 KiB
JavaScript

'use strict';
const logger = require('../../logger')('/admin-api/util.js');
const joi = require('joi');
const customJoi = joi.extend(j => ({
base: j.string(),
name: 'string',
language: {
isUrlFriendly: 'must be URL friendly',
},
rules: [
{
name: 'isUrlFriendly',
validate(params, value, state, options) {
if (encodeURIComponent(value) !== value) {
// Generate an error, state and options need to be passed
return this.createError(
'string.isUrlFriendly',
{ v: value },
state,
options
);
}
return value; // Everything is OK
},
},
],
}));
const nameType = customJoi
.string()
.isUrlFriendly()
.min(2)
.max(100)
.required();
const handleErrors = (res, error) => {
logger.warn(error.message);
switch (error.name) {
case 'NotFoundError':
return res.status(404).end();
case 'NameExistsError':
case 'ValidationError':
return res
.status(400)
.json(error)
.end();
default:
logger.error('Server failed executing request', error);
return res.status(500).end();
}
};
module.exports = { nameType, handleErrors };