import { TAGS } from 'lib/constants'; import { ensureStartsWith } from 'lib/utils'; import { ExtractVariables, salesforceFetch } from './utils'; const ocapiDomain = process.env.SFCC_SANDBOX_DOMAIN ? ensureStartsWith(process.env.SFCC_SANDBOX_DOMAIN, 'https://') : ''; export async function getProductRecommendations(productId: string): Promise { const productRecommendationsEndpoint = `/products/${productId}/recommendations`; const res = await ocFetch({ method: 'GET', endpoint: productRecommendationsEndpoint, tags: [TAGS.products] }); return res.body as T; } async function ocFetch(options: { method: 'POST' | 'GET'; endpoint: string; cache?: RequestCache; headers?: HeadersInit; tags?: string[]; variables?: ExtractVariables; }): Promise<{ status: number; body: T } | never> { const apiEndpoint = `${ocapiDomain}${process.env.SFCC_OPENCOMMERCE_SHOP_API_ENDPOINT}${options.endpoint}?client_id=${process.env.SFCC_CLIENT_ID}`; return salesforceFetch({ ...options, apiEndpoint }); }