UNPKG

ci-validation

Version:

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

118 lines • 4.85 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ANV = void 0; const axios_1 = __importDefault(require("axios")); class ANV { constructor() { this.baseUrl = "https://gestion.anv.gub.uy/serviciosDMZ/api/app"; this.timeout = 10000; // 10 segundos this.bearerToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c3VhcmlvIjoiQU5WIiwiZG9jdW1lbnRvIjoiMCIsInRpcG9fZG9jdW1lbnRvIjoiMCIsImlzX3N1cGVydmlzb3IiOiIwIiwib3BlcmF0b3JfY29kZSI6IjAiLCJzdWN1cnNhbCI6IiIsInBlcm1pc29zIjoiIiwiaGFzaCI6IiIsInR4IjoiIiwiZGF0b3MiOiIiLCJyb2xlcyI6IiIsIm5iZiI6MTcyNDg3OTU0MSwiZXhwIjoyMDQwNDEyMzQxLCJpYXQiOjE3MjQ4Nzk1NDF9.qp35Z1X5wKqBH_iB5Nt24BO1fQvnWf07dUO1ul4WFzA"; } /** * Busca información de una persona en ANV por cédula * @param cedula - Número de cédula a consultar * @returns Promise<ANVResponse> - Información de la persona encontrada */ async buscarPersona(cedula) { try { const response = await axios_1.default.get(`${this.baseUrl}/BuscarPersonaDNIC?cedula=${cedula}`, { headers: { Authorization: `Bearer ${this.bearerToken}`, "Content-Type": "application/json", }, timeout: this.timeout, }); return { success: true, data: response.data, ...response.data, }; } catch (error) { console.error("Error al consultar ANV:", error); if (axios_1.default.isAxiosError(error)) { if (error.response) { return { success: false, error: `Error del servidor ANV: ${error.response.status} - ${error.response.statusText}`, data: error.response.data, }; } if (error.code === "ECONNABORTED") { return { success: false, error: "Timeout: El servicio ANV no respondió en el tiempo esperado", }; } return { success: false, error: "Error de conexión con el servicio ANV", }; } return { success: false, error: "Error inesperado al consultar ANV", }; } } /** * Verifica si una persona está registrada en ANV * @param cedula - Número de cédula a verificar * @returns Promise<boolean> - true si está registrada, false si no */ async isPersonRegistered(cedula) { try { const response = await this.buscarPersona(cedula); // Si la consulta fue exitosa y hay datos, consideramos que está registrada if (response.success && response.data) { // Verificamos si hay información válida en la respuesta return response.data !== null && response.data !== undefined && Object.keys(response.data).length > 0; } return false; } catch (error) { console.error("Error al verificar registro en ANV:", error); return false; } } /** * Verifica si el servicio ANV está disponible * @returns Promise<boolean> - true si el servicio está disponible */ async isServiceAvailable() { try { // Realizar una consulta de prueba con timeout reducido await axios_1.default.get(`${this.baseUrl}/BuscarPersonaDNIC?cedula=12345678`, // CI de prueba { headers: { Authorization: `Bearer ${this.bearerToken}`, "Content-Type": "application/json", }, timeout: 5000, // Timeout reducido para health check }); return true; } catch (error) { // Si es un error 404 o similar, el servicio está disponible pero no hay datos if (axios_1.default.isAxiosError(error) && error.response && error.response.status < 500) { return true; } console.warn("Servicio ANV no disponible:", error); return false; } } /** * Obtiene información detallada de una persona desde ANV * @param cedula - Número de cédula a consultar * @returns Promise<any> - Información completa de la persona */ async getPersonInfo(cedula) { const response = await this.buscarPersona(cedula); return response.data; } } exports.ANV = ANV; //# sourceMappingURL=ANV.js.map