Skip to content

Commit

Permalink
Support search by category endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
perfaram committed Mar 11, 2024
1 parent 120a76e commit 445604c
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 1 deletion.
1 change: 1 addition & 0 deletions src/api/apiPaths.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ const defaultMigustoApiPath = "https://migusto.migros.ch";
export const migrosApiPaths = {
["onesearch-oc-seapi"]: {
public: {
v3: defaultMigrosApiPath + "/onesearch-oc-seaapi/public/v3",
v4: defaultMigrosApiPath + "/onesearch-oc-seaapi/public/v4",
v5: defaultMigrosApiPath + "/onesearch-oc-seaapi/public/v5",
},
Expand Down
79 changes: 79 additions & 0 deletions src/api/onesearch-oc-seaapi/category.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
import { Region } from "../enums/Region";
import { Language } from "../enums/Language";
import { Algorithm } from "../enums/Algorithm";
import { SortFields } from "../enums/SortFields";
import { SortOrder } from "../enums/SortOrder";

import { postRequest } from "../../utils/requests";

import { migrosApiPaths } from "../apiPaths";
import { IMigrosNecessaryHeaders } from "../interfaces/headers";

const url = migrosApiPaths["onesearch-oc-seapi"].public.v3 + "/search/category";

// eslint-disable-next-line @typescript-eslint/naming-convention
export type ICategoryListOptions = Record<string, any>;

const defaultCategoryListOptions: ICategoryListOptions = {};

export interface ICategoryListBody extends Record<string, any> {
algorithm?: Algorithm;
categoryId: number;
filters?: Record<any, any>;
from: number;
language?: Language;
productIds?: string[];
regionId?: Region;
requestSponsoredProducts: boolean;
sortFields?: SortFields[];
sortOrder?: SortOrder;
}

const defaultCategoryListBody: ICategoryListBody = {
algorithm: Algorithm.DEFAULT,
regionId: Region.NATIONAL,
language: Language.EN,
productIds: [],
sortFields: [],
sortOrder: SortOrder.ASC,
requestSponsoredProducts: false,
from: 0,
categoryId: 0,
};

async function postCategoryListRequest(
url: string,
body: ICategoryListBody,
options: ICategoryListOptions,
headers: IMigrosNecessaryHeaders,
): Promise<Record<string, any>> {
const necessaryHeaders = {
accept: "application/json, text/plain, *!/!*",
// eslint-disable-next-line @typescript-eslint/naming-convention
"content-type": "application/json",
...headers,
};

const response = await postRequest(url, body, options, necessaryHeaders);

return await response.json();
}

export async function categoryList(
categoryListBody: ICategoryListBody,
headers: IMigrosNecessaryHeaders,
categoryListOptions?: ICategoryListOptions,
): Promise<any> {
categoryListOptions = {
...defaultCategoryListOptions,
...categoryListOptions,
};
categoryListBody = { ...defaultCategoryListBody, ...categoryListBody };

return postCategoryListRequest(
url,
categoryListBody,
categoryListOptions,
headers,
);
}
4 changes: 3 additions & 1 deletion src/api/onesearch-oc-seaapi/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { postProductSearch } from "./product-search";
import { categoryList } from "./category";

export const productSearch = {
searchProduct: postProductSearch
searchProduct: postProductSearch,
category: categoryList
}

0 comments on commit 445604c

Please sign in to comment.