UNPKG

vinmonopolet-ts

Version:

Extracts information on products, categories and stores from Vinmonopolet

28 lines (27 loc) 1.23 kB
import { GET } from "../../util/GET"; import { VINMONOPOLET_SEARCH_URL } from "../../constants"; import Pagination from "../../models/Pagination"; import { fromDTOToBaseProduct } from "../../models/product/mapper"; const sortFields = ["relevance", "name", "price"]; const sortOrders = ["asc", "desc"]; async function getProducts(options) { const query = createSearchQuery(options); const productSearchResult = await GET(VINMONOPOLET_SEARCH_URL, query); return { pagination: new Pagination(productSearchResult.pagination, options, getProducts), products: productSearchResult.products.map(fromDTOToBaseProduct), }; } function createSearchQuery(options) { const facetquery = options?.facets?.map((facet) => facet.query) ?? []; const sortQuery = options?.sort ? `:${options.sort}:` : ":relevance:"; const textQuery = options?.query ?? ""; return new URLSearchParams({ searchType: "product", fields: "FULL", pageSize: (options?.limit ? options.limit : 24).toString(), currentPage: (options?.page ? options.page - 1 : 0).toString(), q: textQuery + sortQuery + facetquery?.join(":"), }); } export default getProducts;