diff --git a/src/routes/shop/+layout.server.ts b/src/routes/shop/+layout.server.ts index e1df03e..82794f6 100644 --- a/src/routes/shop/+layout.server.ts +++ b/src/routes/shop/+layout.server.ts @@ -1,9 +1,7 @@ import { error } from '@sveltejs/kit' import type { PageServerLoad } from './$types' -import base64 from 'base-64' import { fetchAPI } from '$utils/api' -import { PUBLIC_SWELL_STORE_ID } from '$env/static/public' -import { SWELL_API_TOKEN, SWELL_API_ENDPOINT } from '$env/static/private' +import { fetchSwell } from '$utils/functions/shopServer' export const load: PageServerLoad = async () => { try { @@ -57,12 +55,7 @@ export const load: PageServerLoad = async () => { /** * Get products data from Swell */ - const shopProductsRes: any = await fetch(`${SWELL_API_ENDPOINT}/products`, { - headers: { - Authorization: `Basic ${base64.encode(`${PUBLIC_SWELL_STORE_ID}:${SWELL_API_TOKEN}`)}` - }, - }) - const shopProducts = await shopProductsRes.json() + const shopProducts: any = await fetchSwell('/products') if (shopProducts) { return { diff --git a/src/routes/shop/+page.server.ts b/src/routes/shop/+page.server.ts index 684600d..f27c80d 100644 --- a/src/routes/shop/+page.server.ts +++ b/src/routes/shop/+page.server.ts @@ -1,10 +1,8 @@ import { error } from '@sveltejs/kit' import type { PageServerLoad } from './$types' -import base64 from 'base-64' import { fetchAPI } from '$utils/api' import { getRandomItem } from '$utils/functions' -import { PUBLIC_SWELL_STORE_ID } from '$env/static/public' -import { SWELL_API_TOKEN, SWELL_API_ENDPOINT } from '$env/static/private' +import { fetchSwell } from '$utils/functions/shopServer' export const load: PageServerLoad = async ({}) => { try { @@ -41,12 +39,7 @@ export const load: PageServerLoad = async ({}) => { const randomPoster: any = getRandomItem(data.data.posters) // Fetch Swell API for product - const shopProductRes: any = await fetch(`${SWELL_API_ENDPOINT}/products/${randomPoster.product_id}`, { - headers: { - Authorization: `Basic ${base64.encode(`${PUBLIC_SWELL_STORE_ID}:${SWELL_API_TOKEN}`)}` - }, - }) - const shopProduct = await shopProductRes.json() + const shopProduct: any = await fetchSwell(`/products/${randomPoster.product_id}`) if (shopProduct) { return { diff --git a/src/routes/shop/[type]-[name]/+page.server.ts b/src/routes/shop/[type]-[name]/+page.server.ts index 0360321..2ca057c 100644 --- a/src/routes/shop/[type]-[name]/+page.server.ts +++ b/src/routes/shop/[type]-[name]/+page.server.ts @@ -1,9 +1,7 @@ import { error } from '@sveltejs/kit' import type { PageServerLoad } from './$types' -import base64 from 'base-64' import { fetchAPI } from '$utils/api' -import { PUBLIC_SWELL_STORE_ID } from '$env/static/public' -import { SWELL_API_TOKEN, SWELL_API_ENDPOINT } from '$env/static/private' +import { fetchSwell } from '$utils/functions/shopServer' export const load: PageServerLoad = async ({ params }) => { try { @@ -38,12 +36,7 @@ export const load: PageServerLoad = async ({ params }) => { const poster = data.data.poster[0] // Fetch Swell API for product - const shopProductRes: any = await fetch(`${SWELL_API_ENDPOINT}/products/${poster.product_id}`, { - headers: { - Authorization: `Basic ${base64.encode(`${PUBLIC_SWELL_STORE_ID}:${SWELL_API_TOKEN}`)}` - }, - }) - const shopProduct = await shopProductRes.json() + const shopProduct: any = await fetchSwell(`/products/${poster.product_id}`) if (shopProduct) { return { diff --git a/src/utils/functions/shopServer.ts b/src/utils/functions/shopServer.ts new file mode 100644 index 0000000..235b00d --- /dev/null +++ b/src/utils/functions/shopServer.ts @@ -0,0 +1,25 @@ +import base64 from 'base-64' +import { PUBLIC_SWELL_STORE_ID } from '$env/static/public' +import { SWELL_API_TOKEN, SWELL_API_ENDPOINT } from '$env/static/private' + + +/** + * Query data from Swell REST API + */ +export const fetchSwell = async (path: string, options?: any) => { + const basicAuth: string = base64.encode(`${PUBLIC_SWELL_STORE_ID}:${SWELL_API_TOKEN}`) + + const req = await fetch(`${SWELL_API_ENDPOINT}/${path}`, { + headers: { + Authorization: `Basic ${basicAuth}` + }, + }) + + if (req.ok) { + const res = await req.json() + + if (res) { + return res + } + } +} \ No newline at end of file