export interface ProductInfo { productId: string, companyName: string, productName: string, price: number, accessDate: string, picture: string | null } interface WooliesResponse { Product: { Stockcode: number, DisplayName: string, Price: number, LargeImageFile: string } } interface ColesResponse { pricing: { now: number, } id: number, name: string, imageUris: [{ uri: string }] } // const COLES_ROOT_URL = "apigw.coles.com.au" // const WOOLIES_ROOT_URL = "www.woolworths.com.au" const COLES_ROOT_URL = "localhost:3002" const WOOLIES_ROOT_URL = "localhost:3002" export async function fetchWooliesProduct(productID: string): Promise { const options = { method: 'GET', // credentials: 'include', headers: { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0', "Cookie": '_abck=8D926507FE8BB3E2030100E0A40908AD~-1~YAAQDV8wF4yrp+WKAQAAcBa1+QqOLH6Cr1PPGhoBK6dzldNoO6fT9E5Yh2JWjug69wmscVVDCxTl3AtqhLO700yB1l/aMekoSEMfXWdB1vAkiaNMKVPNjc+x4hh7Yon6NLceF4NYulFEKqcjo1BEgGtnYYv8xgJW0jcO0i4kIdNAZaszCrXxefAMTskVsvWcZvmAuqcLr72EmDY6BNBSCQgzm2KX4uAM7D79DQVKY5TDR79ITzKmCZghdYGdNrXtSxksNB8rllTWUT+5UD45fpB13jYdxmwy6Lu51gBNuYrQ/lmQuJdFIzc3czVYvQI64uDlWbA17Swz/9En3cCF0/IGtuAUx/6PfJVfAdFyfZrcD3d7Sl+vdzlhiZ3smo/1/ocITzZggDurPckyVMvy5DPmZDx1mwvkn83yOt0cP7c=~-1~-1~-1;' } }; const url = `http://${WOOLIES_ROOT_URL}/apis/ui/product/detail/${productID}?isMobile=false&useVariant=false` const response = fetch(url, options) // .json() // .then(response => console.log(response)) .then(response => response.json()) .then(x => {console.log(url, x); return x}) .then(data => data as WooliesResponse) .then(formatWooliesProduct) // .catch(err => console.error(err)); return response } export async function fetchColesProduct(productID: string): Promise { const options = { method: 'GET', headers: { 'Ocp-Apim-Subscription-Key': 'dd6ae58532d743978508555a59a199ac', 'User-Agent': 'okhttp/4.10.0' } }; const url = `https://${COLES_ROOT_URL}/digital/colesappbff/v3/api/2/products/${productID}?type=sku&storeId=697&shoppingMethod=clickAndCollect&includeLiquor=true` // const url = `http://localhost:3002/apis/ui/product/detail/${productID}?isMobile=false&useVariant=false` const response = fetch(url, options) // .json() // .then(response => console.log(response)) .then(x => {console.log(x); return x}) .then(response => response.json()) .then(data => data as WooliesResponse) .then(formatWooliesProduct) // .catch(err => console.error(err)); return response } function formatWooliesProduct(json: WooliesResponse): ProductInfo { const data = json.Product return { "productId": String(data.Stockcode), "companyName": "Woolies", "productName": data.DisplayName, "price": data.Price, "accessDate": String(Date.now()), "picture": data.LargeImageFile } } function formatColesProduct(json: ColesResponse): ProductInfo { return { "productId": String(json.id), "companyName": "Coles", "productName": json.name, "price": json.pricing.now, "accessDate": String(Date.now()), "picture": json.imageUris[0]?.uri } }