identi-recognition
Version:
identiRecognition
115 lines (106 loc) • 3.56 kB
JavaScript
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
}