rues-api
Version:
RUES API wrapper
222 lines (220 loc) • 5.36 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var src_exports = {};
__export(src_exports, {
advancedSearch: () => advancedSearch,
baseUrl: () => baseUrl,
getBusinessDetails: () => getBusinessDetails,
getBusinessEstablishments: () => getBusinessEstablishments,
getFile: () => getFile,
getLegalRepresentativePowers: () => getLegalRepresentativePowers,
getToken: () => getToken,
getTokenWithPassword: () => getTokenWithPassword,
queryNit: () => queryNit
});
module.exports = __toCommonJS(src_exports);
var baseUrl = process.env.RUES_API_BASE_URL ?? "https://ruesapi.rues.org.co";
function advancedSearch({
query,
signal,
token
}) {
return ruesApi({
body: query,
path: "/api/ConsultasRUES/BusquedaAvanzadaRM",
signal,
token
});
}
function getBusinessDetails(registrationId) {
const businessRegistrationNumber = registrationId.slice(-10);
const chamberCode = registrationId.replace(businessRegistrationNumber, "").padStart(2, "0");
return {
businessRegistrationNumber,
chamberCode
};
}
function getBusinessEstablishments({
query,
signal,
token
}) {
return ruesApi({
path: "/api/PropietarioEstXCamaraYMatricula",
searchParams: new URLSearchParams({
codigo_camara: query.chamberCode,
matricula: query.businessRegistrationNumber
}),
signal,
token
});
}
async function getFile({
registrationId,
signal
}) {
return ruesApi({
method: "GET",
path: `/WEB2/api/Expediente/DetalleRM/${registrationId}`,
signal
});
}
function getLegalRepresentativePowers({
query,
signal,
token
}) {
return ruesApi({
path: "/api/ConsultFacultadesXCamYMatricula",
searchParams: new URLSearchParams({
codigo_camara: query.chamberCode,
matricula: query.registrationNumber
}),
signal,
token
});
}
async function getToken({ signal } = {}) {
try {
const response = await ruesFetch({
path: "/WEB2/api/Token/ObtenerToken",
signal
});
const data = await response.json();
const token = response.headers.get("tokenRuesAPI");
if (!token || !response.ok) {
return {
error: data,
status: "error",
statusCode: response.status
};
}
return {
data: { token },
status: "success",
statusCode: response.status
};
} catch (error) {
return {
error,
status: "error"
};
}
}
async function getTokenWithPassword({
password,
signal,
username
}) {
const headers = new Headers();
headers.append("Content-Type", "application/x-www-form-urlencoded");
const urlencoded = new URLSearchParams();
urlencoded.append("grant_type", "password");
urlencoded.append("username", username);
urlencoded.append("password", password);
return ruesApi({
body: urlencoded.toString(),
headers,
path: "Token",
signal
});
}
async function queryNit({
nit,
signal,
token
}) {
return ruesApi({
path: "/api/consultasRUES/ConsultaNIT",
searchParams: new URLSearchParams({
nit: String(nit),
usuario: ""
}),
signal,
token
});
}
async function ruesApi(options) {
try {
const response = await ruesFetch(options);
const data = await response.json();
if (!response.ok) {
return {
error: data,
status: "error",
statusCode: response.status
};
}
if (typeof data === "object" && data !== null && "error" in data && Number(data.error.code) !== 0) {
return {
error: data.error.message,
status: "error",
statusCode: Number(data.error.code)
};
}
return {
data,
status: "success",
statusCode: response.status
};
} catch (error) {
return {
error,
status: "error"
};
}
}
async function ruesFetch({
body,
headers,
method = "POST",
path,
searchParams,
signal,
token
}) {
const ruesHeaders = new Headers();
ruesHeaders.append("Content-Type", "application/json");
if (token) {
ruesHeaders.append("Authorization", `Bearer ${token}`);
}
const url = new URL(path, baseUrl);
if (searchParams) {
url.search = searchParams.toString();
}
return fetch(url, {
body: typeof body === "string" ? body : JSON.stringify(body),
headers: headers ?? ruesHeaders,
method,
signal
});
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
advancedSearch,
baseUrl,
getBusinessDetails,
getBusinessEstablishments,
getFile,
getLegalRepresentativePowers,
getToken,
getTokenWithPassword,
queryNit
});