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
JavaScript
;
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