mirror of
https://github.com/Unleash/unleash.git
synced 2024-12-22 19:07:54 +01:00
57 lines
1.4 KiB
JavaScript
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 };
|