import { StoreType } from "../enums/StoreType"; import { Region } from "../enums/Region"; import { getRequestBypass } from "../../utils/requests"; import { migrosApiPaths } from "../apiPaths"; import { IMigrosNecessaryHeaders } from "../interfaces/headers"; const url = migrosApiPaths["product-display"].public.v2 + "/product-detail"; export interface IProductDetailOptions extends Record { uids?: string | string[]; storeType?: StoreType; region?: Region; newCategoryTree?: boolean; warehouseId?: number; ongoingOfferDate?: string; migrosIds?: string; } const defaultProductDetailOptions: IProductDetailOptions = { warehouseId: 1, storeType: StoreType.OFFLINE, region: Region.NATIONAL, }; async function getProductDetailRequest( url: string, options: IProductDetailOptions, headers: IMigrosNecessaryHeaders, ): Promise> { if (Array.isArray(options.uids)) { options.uids = options.uids.join(","); } const necessaryHeaders = { accept: "application/json, text/plain, *!/!*", ...headers, }; const response = await getRequestBypass(url, options, necessaryHeaders); return await response.data; } export async function getProductDetail( productDetailOptions: IProductDetailOptions, headers: IMigrosNecessaryHeaders, ): Promise { productDetailOptions = { ...defaultProductDetailOptions, ...productDetailOptions, }; return getProductDetailRequest(url, productDetailOptions, headers); }