trm-api
Version:
Tasa Representativa del Mercado API wrapper to simplify GET requests and JSON response parsing
73 lines (72 loc) • 2.23 kB
JavaScript
// src/trm-api.ts
var TrmApi = class {
constructor(appToken = "") {
this.trmApiUrl = "https://www.datos.gov.co/resource/32sa-8pi3.json";
this.headers = {};
if (appToken !== "") {
this.headers["X-App-Token"] = appToken;
}
}
async latest() {
const searchParams = new URLSearchParams({
$limit: "1",
$order: "vigenciahasta DESC"
});
const response = await fetch(`${this.trmApiUrl}?${searchParams}`, {
headers: this.headers
});
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
const data = await response.json();
return data[0];
}
async between({
startAt,
endAt,
order = "ASC"
}) {
const searchParams = new URLSearchParams({
$where: `(vigenciadesde <= '${startAt}' AND vigenciahasta >= '${startAt}') OR (vigenciadesde >= '${startAt}' AND vigenciahasta <= '${endAt}') OR (vigenciadesde <= '${endAt}' AND vigenciahasta >= '${endAt}')`,
$order: `vigenciadesde ${order}`
});
const response = await fetch(`${this.trmApiUrl}?${searchParams}`, {
headers: this.headers
});
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
const data = await response.json();
return data;
}
async history({
limit = 1e3,
order = "ASC"
} = {}) {
const searchParams = new URLSearchParams({
$limit: String(limit),
$order: `vigenciadesde ${order}`
});
const response = await fetch(`${this.trmApiUrl}?${searchParams}`, {
headers: this.headers
});
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
const data = await response.json();
return data;
}
async date(date) {
const data = await this.between({ startAt: date, endAt: date });
return data[0];
}
async query(query) {
const searchParams = new URLSearchParams({
$query: query
});
const response = await fetch(`${this.trmApiUrl}?${searchParams}`, {
headers: this.headers
});
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
const data = await response.json();
return data;
}
};
var trm_api_default = TrmApi;
export {
trm_api_default as default
};