UNPKG

@alextomas80/api-client-grupeta

Version:

Cliente API Grupeta CBR

83 lines (69 loc) 2.21 kB
import { addDays, format } from "date-fns"; import { getApiToken } from "../config"; import { Calendar, CalendarApi, CalendarApiResponse } from "../definitions/models"; import createAxiosInstance from "./axios"; const mapCalendar = (data: CalendarApiResponse): Calendar[] => { const items = data.data.map(({ id, title, description, date, route, status }: CalendarApi) => { return { date, description, documentId: id, route, title, status, } as unknown as Calendar; }); return items; }; const fetchEvents = async (path: string): Promise<{ calendar: Calendar[] }> => { const ACCESS_TOKEN = getApiToken(); const axiosStrava = createAxiosInstance(ACCESS_TOKEN); const { data } = await axiosStrava.get<CalendarApiResponse>(path); const calendar = mapCalendar(data); return { calendar, }; }; export const getCalendar = async ({ fields = "*", limit = 10, page = 0, }: { fields: string; limit?: number; page?: number; }): Promise<Calendar[]> => { try { const filters = `limit=${limit}${page ? `&page=${page}` : ""}`; const { calendar } = await 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."); } }; export const getUpcomingRoutes = async ({ fields = "*", limit = 10, page = 0, sort = "date", }: { fields: string; limit?: number; page?: number; sort?: string; }): Promise<Calendar[]> => { try { // Obtener la fecha actual const today = new Date(); const tomorrow = format(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 } = await 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."); } };