migros-api-wrapper
Version:
Making the api of migros more accessible to the public.
56 lines (45 loc) • 1.48 kB
text/typescript
import { StoreType } from "../enums/StoreType";
import { Region } from "../enums/Region";
import { getRequest } 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<string, any> {
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<Record<string, any>> {
if (Array.isArray(options.uids)) {
options.uids = options.uids.join(",");
}
const necessaryHeaders = {
accept: "application/json, text/plain, *!/!*",
...headers,
};
const response = await getRequest(url, options, necessaryHeaders);
return await response.json();
}
export async function getProductDetail(
productDetailOptions: IProductDetailOptions,
headers: IMigrosNecessaryHeaders,
): Promise<any> {
productDetailOptions = {
...defaultProductDetailOptions,
...productDetailOptions,
};
return getProductDetailRequest(url, productDetailOptions, headers);
}