UNPKG

ci-validation

Version:

🇺🇾 Complete TypeScript/JavaScript library for validating Uruguayan CI (Cédula de Identidad) with official algorithm and government service integration

112 lines 3.89 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.LoteriaUyCiService = void 0; const axios_1 = __importDefault(require("axios")); const ExternalCiService_1 = require("./ExternalCiService"); class LoteriaUyCiService { constructor() { this.baseUrl = "https://www.mef.gub.uy/bandejatramites/action"; this.timeout = 10000; // 10 segundos // Configurar axios con timeout y headers por defecto axios_1.default.defaults.timeout = this.timeout; } async queryCiInfo(ci) { const newService = new ExternalCiService_1.ExternalCiService(); return newService.queryCiInfo(ci); } async isServiceAvailable() { const newService = new ExternalCiService_1.ExternalCiService(); return newService.isServiceAvailable(); } /** * Consulta información de una cédula en el formulario oficial del MEF * Deprecated */ async queryCiInfoOld(ci) { try { const params = new URLSearchParams({ cmdaction: "obtenercedula", numero: ci, }); const response = await axios_1.default.post(this.baseUrl, params, { headers: { "Content-Type": "application/x-www-form-urlencoded", "User-Agent": "CI-Validation-API/1.0.0", }, timeout: this.timeout, }); if (response.status === 200) { return { success: true, data: response.data, }; } else { return { success: false, error: `Respuesta inesperada del servidor: ${response.status}`, }; } } catch (error) { return this.handleError(error); } } /** * Verifica si el servicio externo está disponible */ async isServiceAvailableOld() { try { // Realizar una consulta de prueba con timeout reducido const testParams = new URLSearchParams({ cmdaction: "obtenercedula", numero: "12345678", // CI de prueba }); await axios_1.default.post(this.baseUrl, testParams, { headers: { "Content-Type": "application/x-www-form-urlencoded", }, timeout: 5000, // Timeout reducido para health check }); return true; } catch (error) { console.warn("Servicio externo no disponible:", error); return false; } } /** * Maneja errores de la consulta externa */ handleError(error) { if (axios_1.default.isAxiosError(error)) { if (error.code === "ECONNABORTED") { return { success: false, error: "Timeout: El servicio no respondió en el tiempo esperado", }; } if (error.response) { return { success: false, error: `Error del servidor: ${error.response.status} - ${error.response.statusText}`, }; } if (error.request) { return { success: false, error: "Error de conexión: No se pudo conectar con el servicio", }; } } return { success: false, error: `Error inesperado: ${error.message || "Error desconocido"}`, }; } } exports.LoteriaUyCiService = LoteriaUyCiService; //# sourceMappingURL=CiService.js.map