scala-mensajes
Version:
Mensajes internos y externos estructurados.
81 lines (72 loc) • 4.52 kB
JavaScript
/**
* Crea un objeto json para el manejo iterno de mensajes
*
* @param {String} tipoMensaje ['exito', 'error']
* @param {String} titulo Titulo del mensaje
* @param {String} mensaje Cuerpo del mensaje
* @param {String} tipoError ['parametros', 'datos', 'baseDeDatos', 'configuracion', 'otros']
* @param {array} data Arreglo de objetos json con datos que se quieran retornar
*
*/
const crearMensajeInterno = (tipoMensaje, titulo, mensaje, tipoError, data) => {
if(data == null)
data = []
switch (tipoMensaje) {
case 'exito':
return {'error':false, 'titulo': titulo, 'mensaje': mensaje, 'data': data}
case 'error':
return {'error':true, 'titulo': titulo, 'mensaje': mensaje, 'tipoError': tipoError, 'data': data}
default:
return {"error": true, "mensaje": "Error no especificado", 'tipoError': 'otros', 'data': []}
}
}
/**
* Crea la estrucutra de una respuesta al "front-end"
*
* @param {res} res Objeto response de la peticion a la ruta
* @param {String} tipoRespuesta ['exito', 'errorCliente', 'errorServidor']
* @param {String} tipoError "tipoError" con 'errorCliente' son --> ['malaPeticion', 'noAutorizado', 'noEncontrado', 'metodoNoPermitido', 'tiempoDeEspera'] "tipoError" con 'errorServidor' son --> ['interno', 'noImplementado', 'noDisponible']
* @param {String} titulo
* @param {String} mensaje
* @param {array} data Arreglo de objetos json con datos que se quieran retornar
*/
const crearMensajeExterno = (res, tipoRespuesta, tipoError, titulo, mensaje, data) => {
if(data == null)
data = []
switch (tipoRespuesta) {
case 'exito':
return (res.status(200).json({'error':false, 'titulo': titulo, 'mensaje': mensaje, 'data': data}))
case 'errorCliente':
switch (tipoError) {
case 'malaPeticion':
return (res.status(400).json({'error':true, 'titulo': titulo, 'mensaje': mensaje, 'data': data}) )
case 'noAutorizado':
return (res.status(401).json({'error':true, 'titulo': titulo, 'mensaje': mensaje, 'data': data}) )
case 'noEncontrado':
return (res.status(404).json({'error':true, 'titulo': titulo, 'mensaje': mensaje, 'data': data}) )
case 'metodoNoPermitido':
return (res.status(405).json({'error':true, 'titulo': titulo, 'mensaje': mensaje, 'data': data}) )
case 'tiempoDeEspera':
return (res.status(408).json({'error':true, 'titulo': titulo, 'mensaje': mensaje, 'data': data}) )
default:
return (res.status(400).json({'error':true, 'titulo': 'No definido', 'mensaje': 'No definido', 'data': []}))
}
case 'errorServidor':
switch (tipoError) {
case 'interno':
return (res.status(500).json({'error':true, 'titulo': titulo, 'mensaje': mensaje, 'data': data}) )
case 'noImplementado':
return (res.status(501).json({'error':true, 'titulo': titulo, 'mensaje': mensaje, 'data': data}) )
case 'noDisponible':
return (res.status(503).json({'error':true, 'titulo': titulo, 'mensaje': mensaje, 'data': data}) )
default:
return (res.status(500).json({'error':true, 'titulo': titulo, 'mensaje': mensaje, 'data': []}) )
}
default:
return (res.status(500).json({'error':true, 'titulo': 'No definido', 'mensaje': 'No definido', 'data': []}))
}
}
module.exports = {
crearMensajeExterno: crearMensajeExterno,
crearMensajeInterno: crearMensajeInterno
}