UNPKG

@alextomas80/api-client-grupeta

Version:

Cliente API Grupeta CBR

56 lines (46 loc) 1.49 kB
import { getApiToken } from "../config"; import { Bakery, BakeryApi, BakeryApiResponse } from "../definitions/models/Bakery"; import createAxiosInstance from "./axios"; const mapBakery = (data: BakeryApiResponse): Bakery[] => { const items = data.data.map(({ id, name, description, location, town, status, images }: BakeryApi) => { return { description, location, town, status, documentId: id, name, images, } as unknown as Bakery; }); return items; }; const fetchBakeries = async (path: string): Promise<{ bakeries: Bakery[] }> => { const ACCESS_TOKEN = getApiToken(); const axiosStrava = createAxiosInstance(ACCESS_TOKEN); const { data } = await axiosStrava.get<BakeryApiResponse>(path); const bakery = mapBakery(data); return { bakeries: bakery }; }; export const getBakeries = async ({ fields = "*", limit = 10, page = 0, sort = "name", }: { fields: string; limit?: number; page?: number; sort?: string; }): Promise<Bakery[]> => { try { // Crear los filtros para obtener solo las rutas futuras const pageQuery = page ? `&page=${page}` : ""; const filters = [`limit=${limit}`, `sort=${sort}`, pageQuery].join("&"); const { bakeries } = await fetchBakeries(`/items/bakeries?${filters}&fields=${fields}`); return bakeries; } catch (error) { console.error("Error al obtener las panaderías:", error); throw new Error("Error al obtener las panaderías."); } };