Move API fetch data to different file
Sharing multiple exportable functions in one file impacts the use of private env variables 🤷
This commit is contained in:
@@ -28,7 +28,7 @@
|
||||
"@sveltejs/adapter-auto": "^1.0.0-next.64",
|
||||
"@sveltejs/adapter-node": "^1.0.0-next.86",
|
||||
"@sveltejs/adapter-vercel": "^1.0.0-next.66",
|
||||
"@sveltejs/kit": "^1.0.0-next.410",
|
||||
"@sveltejs/kit": "^1.0.0-next.411",
|
||||
"@typescript-eslint/eslint-plugin": "^5.33.1",
|
||||
"@typescript-eslint/parser": "^5.33.1",
|
||||
"browserslist": "^4.21.3",
|
||||
|
||||
14
pnpm-lock.yaml
generated
14
pnpm-lock.yaml
generated
@@ -5,7 +5,7 @@ specifiers:
|
||||
'@sveltejs/adapter-auto': ^1.0.0-next.64
|
||||
'@sveltejs/adapter-node': ^1.0.0-next.86
|
||||
'@sveltejs/adapter-vercel': ^1.0.0-next.66
|
||||
'@sveltejs/kit': ^1.0.0-next.410
|
||||
'@sveltejs/kit': ^1.0.0-next.411
|
||||
'@typescript-eslint/eslint-plugin': ^5.33.1
|
||||
'@typescript-eslint/parser': ^5.33.1
|
||||
browserslist: ^4.21.3
|
||||
@@ -47,7 +47,7 @@ devDependencies:
|
||||
'@sveltejs/adapter-auto': 1.0.0-next.64
|
||||
'@sveltejs/adapter-node': 1.0.0-next.86
|
||||
'@sveltejs/adapter-vercel': 1.0.0-next.66
|
||||
'@sveltejs/kit': 1.0.0-next.410_svelte@3.49.0+vite@3.0.8
|
||||
'@sveltejs/kit': 1.0.0-next.411_svelte@3.49.0+vite@3.0.8
|
||||
'@typescript-eslint/eslint-plugin': 5.33.1_vsoshirnpb7xw6mr7xomgfas2i
|
||||
'@typescript-eslint/parser': 5.33.1_4rv7y5c6xz3vfxwhbrcxxi73bq
|
||||
browserslist: 4.21.3
|
||||
@@ -461,8 +461,8 @@ packages:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@sveltejs/kit/1.0.0-next.410_svelte@3.49.0+vite@3.0.8:
|
||||
resolution: {integrity: sha512-/EGeitdSnm0GlAL6fH9vDtzYZsrXSEzSmDE9eoOQa6XfFZMPmgeV8fPReJtqlp+oLR4Q5I/eSV21yrvtoR+reQ==}
|
||||
/@sveltejs/kit/1.0.0-next.411_svelte@3.49.0+vite@3.0.8:
|
||||
resolution: {integrity: sha512-VSkQemKpztgsKjjkrp9kkYI7ESe3mspXjibKaevJ+FzTcJqB1Ehnp8lRbspXqXGtumrLLNADpLJ9c9vhXhhsSA==}
|
||||
engines: {node: '>=16.9'}
|
||||
hasBin: true
|
||||
requiresBuild: true
|
||||
@@ -522,8 +522,8 @@ packages:
|
||||
resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==}
|
||||
dev: true
|
||||
|
||||
/@types/node/18.7.5:
|
||||
resolution: {integrity: sha512-NcKK6Ts+9LqdHJaW6HQmgr7dT/i3GOHG+pt6BiWv++5SnjtRd4NXeiuN2kA153SjhXPR/AhHIPHPbrsbpUVOww==}
|
||||
/@types/node/18.7.6:
|
||||
resolution: {integrity: sha512-EdxgKRXgYsNITy5mjjXjVE/CS8YENSdhiagGrLqjG0pvA2owgJ6i4l7wy/PFZGC0B1/H20lWKN7ONVDNYDZm7A==}
|
||||
dev: true
|
||||
|
||||
/@types/pug/2.0.6:
|
||||
@@ -533,7 +533,7 @@ packages:
|
||||
/@types/sass/1.43.1:
|
||||
resolution: {integrity: sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==}
|
||||
dependencies:
|
||||
'@types/node': 18.7.5
|
||||
'@types/node': 18.7.6
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/eslint-plugin/5.33.1_vsoshirnpb7xw6mr7xomgfas2i:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { error } from '@sveltejs/kit'
|
||||
import type { PageServerLoad } from './$types'
|
||||
import { fetchAPI } from '$utils/api'
|
||||
import { fetchAPI } from '$utils/api/data'
|
||||
import { PUBLIC_PREVIEW_COUNT } from '$env/static/public'
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { error } from '@sveltejs/kit'
|
||||
import type { PageServerLoad } from './$types'
|
||||
import { fetchAPI } from '$utils/api'
|
||||
import { fetchAPI } from '$utils/api/data'
|
||||
import { getRandomItems } from '$utils/functions'
|
||||
|
||||
export const load: PageServerLoad = async () => {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { error } from '@sveltejs/kit'
|
||||
import type { PageServerLoad } from './$types'
|
||||
import { PUBLIC_LIST_AMOUNT } from '$env/static/public'
|
||||
import { fetchAPI } from '$utils/api'
|
||||
import { fetchAPI } from '$utils/api/data'
|
||||
|
||||
export const photoFields = `
|
||||
title
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { error } from '@sveltejs/kit'
|
||||
import type { PageServerLoad } from './$types'
|
||||
import { fetchAPI } from '$utils/api'
|
||||
import { fetchAPI } from '$utils/api/data'
|
||||
|
||||
export const load: PageServerLoad = async ({ params }) => {
|
||||
try {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { error } from '@sveltejs/kit'
|
||||
import type { PageServerLoad } from './$types'
|
||||
import { fetchAPI } from '$utils/api'
|
||||
import { fetchAPI } from '$utils/api/data'
|
||||
import { getRandomItems } from '$utils/functions'
|
||||
|
||||
export const load: PageServerLoad = async () => {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { error } from '@sveltejs/kit'
|
||||
import type { RequestHandler } from './$types'
|
||||
import { fetchAPI } from '$utils/api'
|
||||
import { fetchAPI } from '$utils/api/data'
|
||||
|
||||
|
||||
export const POST: RequestHandler = async ({ request }) => {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { error } from '@sveltejs/kit'
|
||||
import type { PageServerLoad } from './$types'
|
||||
import { fetchAPI } from '$utils/api'
|
||||
import { fetchAPI } from '$utils/api/data'
|
||||
|
||||
export const load: PageServerLoad = async () => {
|
||||
try {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { error } from '@sveltejs/kit'
|
||||
import type { PageServerLoad } from './$types'
|
||||
import { fetchAPI } from '$utils/api'
|
||||
import { fetchAPI } from '$utils/api/data'
|
||||
import { PUBLIC_FILTERS_DEFAULT_COUNTRY, PUBLIC_FILTERS_DEFAULT_SORT, PUBLIC_GRID_AMOUNT } from '$env/static/public'
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { error } from '@sveltejs/kit'
|
||||
import type { PageServerLoad } from './$types'
|
||||
import { fetchAPI } from '$utils/api'
|
||||
import { fetchAPI } from '$utils/api/data'
|
||||
import { getProducts } from '$utils/functions/swell'
|
||||
|
||||
export const load: PageServerLoad = async () => {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { error } from '@sveltejs/kit'
|
||||
import type { PageServerLoad } from './$types'
|
||||
import { fetchAPI } from '$utils/api'
|
||||
import { fetchAPI } from '$utils/api/data'
|
||||
import { getProduct } from '$utils/functions/swell'
|
||||
import { getRandomItem } from '$utils/functions'
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { error } from '@sveltejs/kit'
|
||||
import type { PageServerLoad } from './$types'
|
||||
import { fetchAPI } from '$utils/api'
|
||||
import { fetchAPI } from '$utils/api/data'
|
||||
import { getProduct } from '$utils/functions/swell'
|
||||
|
||||
export const load: PageServerLoad = async ({ params }) => {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { error } from '@sveltejs/kit'
|
||||
import type { PageServerLoad } from './$types'
|
||||
import { fetchAPI } from '$utils/api'
|
||||
import { fetchAPI } from '$utils/api/data'
|
||||
|
||||
export const load: PageServerLoad = async () => {
|
||||
try {
|
||||
|
||||
29
src/utils/api/data.ts
Normal file
29
src/utils/api/data.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import { API_TOKEN } from '$env/static/private'
|
||||
import { PUBLIC_API_GRAPHQL_PATH } from '$env/static/public'
|
||||
import { API_URL } from '.'
|
||||
|
||||
|
||||
/**
|
||||
* Fetch data from Directus API
|
||||
*/
|
||||
export const fetchAPI = async (query: string) => {
|
||||
try {
|
||||
const res = await fetch(`${API_URL}${PUBLIC_API_GRAPHQL_PATH}`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
Authorization: `Bearer ${API_TOKEN}`,
|
||||
},
|
||||
body: JSON.stringify({
|
||||
query
|
||||
})
|
||||
})
|
||||
|
||||
if (res.ok) {
|
||||
const data = await res.json()
|
||||
return data
|
||||
}
|
||||
} catch (error) {
|
||||
throw Error(error)
|
||||
}
|
||||
}
|
||||
@@ -1,36 +1,10 @@
|
||||
import { env } from '$env/dynamic/private'
|
||||
import { PUBLIC_API_URL_DEV, PUBLIC_API_URL_PROD, PUBLIC_API_GRAPHQL_PATH } from '$env/static/public'
|
||||
import { PUBLIC_API_URL_DEV, PUBLIC_API_URL_PROD } from '$env/static/public'
|
||||
|
||||
// Define API URL from environment
|
||||
export const API_URL = env.DEV ? PUBLIC_API_URL_DEV : PUBLIC_API_URL_PROD
|
||||
|
||||
|
||||
/**
|
||||
* Fetch data from Directus API
|
||||
*/
|
||||
export const fetchAPI = async (query: string) => {
|
||||
try {
|
||||
const res = await fetch(`${API_URL}${PUBLIC_API_GRAPHQL_PATH}`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
Authorization: `Bearer ${import.meta.env.VITE_API_TOKEN}`,
|
||||
},
|
||||
body: JSON.stringify({
|
||||
query
|
||||
})
|
||||
})
|
||||
|
||||
if (res.ok) {
|
||||
const data = await res.json()
|
||||
return data
|
||||
}
|
||||
} catch (error) {
|
||||
throw Error(error)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get a Directus asset URL from parameters
|
||||
*/
|
||||
Reference in New Issue
Block a user