@alextomas80/api-client-grupeta
Version:
Cliente API Grupeta CBR
70 lines (69 loc) • 3.14 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getUpcomingRoutes = exports.getCalendar = void 0;
const date_fns_1 = require("date-fns");
const config_1 = require("../config");
const axios_1 = __importDefault(require("./axios"));
const mapCalendar = (data) => {
const items = data.data.map(({ id, title, description, date, route, status }) => {
return {
date,
description,
documentId: id,
route,
title,
status,
};
});
return items;
};
const fetchEvents = (path) => __awaiter(void 0, void 0, void 0, function* () {
const ACCESS_TOKEN = (0, config_1.getApiToken)();
const axiosStrava = (0, axios_1.default)(ACCESS_TOKEN);
const { data } = yield axiosStrava.get(path);
const calendar = mapCalendar(data);
return {
calendar,
};
});
const getCalendar = (_a) => __awaiter(void 0, [_a], void 0, function* ({ fields = "*", limit = 10, page = 0, }) {
try {
const filters = `limit=${limit}${page ? `&page=${page}` : ""}`;
const { calendar } = yield fetchEvents(`/items/calendar?${filters}&fields=${fields}`);
return calendar;
}
catch (error) {
console.error("Error al obtener eventos del calendario:", error);
throw new Error("Error al obtener eventos del calendario.");
}
});
exports.getCalendar = getCalendar;
const getUpcomingRoutes = (_a) => __awaiter(void 0, [_a], void 0, function* ({ fields = "*", limit = 10, page = 0, sort = "date", }) {
try {
// Obtener la fecha actual
const today = new Date();
const tomorrow = (0, date_fns_1.format)((0, date_fns_1.addDays)(today, 1), "yyyy-MM-dd");
// Crear los filtros para obtener solo las rutas futuras
const pageQuery = page ? `&page=${page}` : "";
const filters = [`limit=${limit}`, `filter[date][_gte]=${tomorrow}`, `sort=${sort}`, pageQuery].join("&");
const { calendar } = yield fetchEvents(`/items/calendar?${filters}&fields=${fields}`);
return calendar;
}
catch (error) {
console.error("Error al obtener eventos del calendario:", error);
throw new Error("Error al obtener eventos del calendario.");
}
});
exports.getUpcomingRoutes = getUpcomingRoutes;