UNPKG

identi-recognition

Version:

identiRecognition

115 lines (106 loc) 3.56 kB
const CODES = require('./codes') /** * Maneja errores HTTP que vienen de Axios u otras librerías. * @param {Error} error - El error capturado en la solicitud HTTP. */ function handleHttpError(error) { if (error.response) { // El servidor respondió con un código de estado fuera del rango 2xx console.error(`HTTP Error: ${error.response.status} - ${error.response.statusText}`) console.error(`Detalles: ${JSON.stringify(error.response.data)}`) } else if (error.request) { // La solicitud fue hecha pero no se recibió respuesta console.error('No se recibió respuesta del servidor:', error.request) } else { // Ocurrió un error en la configuración de la solicitud console.error('Error en la solicitud:', error.message) } } /** * Registra un error personalizado para errores no HTTP. * @param {Error} error - Cualquier otro error. */ function handleGenericError(error) { console.error('Error inesperado:', error.message) } /** * Envuelve y lanza un error personalizado que puede ser utilizado en toda la aplicación. * @param {String} message - El mensaje del error personalizado. * @param {Number} [code] - Un código opcional para categorizar el error. */ function throwCustomError(message, code = 500) { const error = new Error(message) error.code = code throw error } function validateTerminalRequest(resp, currentFunction) { try { if (resp) { if (resp.status >= 200 && resp.status <= 299) { res_succ = resp.data if (res_succ['success'] == true) { return res_succ } else { console.error(`${currentFunction} Proccess Wasnt Succesfull`) return false } } else { console.error(`${currentFunction} An error Ocurred in status code : ` + resp.statusCode) return false } } else { console.error(`${currentFunction} No data passed to validate`) return false } } catch (error) { console.error(`${currentFunction} Error Catched : ` + error) return false } } async function validateTerminalResponse(response) { try { if (response?.data?.code !== '000') { const errorMessage = `[validateTerminalResponse] RA08 error ${response.data.code}` throw new hfSecHerror({ message: errorMessage, ...CODES.HFS004, baseErrorMsg: response?.data?.msg, baseErrorCode: response?.data?.code }) } if (response?.data?.msg !== 'success') { const errorMessage = `[validateTerminalResponse] Terminal error: ${response?.data?.msg}` throw new hfSecHerror({ message: errorMessage, ...CODES.HFS004, baseErrorMsg: response?.data?.msg, baseErrorCode: response?.data?.code }) } return true } catch (error) { if (error instanceof hfSecHerror) { throw error } const errorMessage = `[validateTerminalResponse] RA08 Device not responding` throw new hfSecHerror({ message: errorMessage, ...CODES.HFS005, baseError: error?.message }) } } class hfSecHerror extends Error { constructor(data) { let errorMessage = typeof data === 'string' ? data : data.message errorMessage = !errorMessage ? 'Unokwn Error Definition' : errorMessage super(errorMessage) delete data?.message this.details = { ...data } } } // Exportamos las funciones para ser utilizadas en otras partes del proyecto module.exports = { handleHttpError, handleGenericError, throwCustomError, validateTerminalRequest, validateTerminalResponse, hfSecHerror }