Spaces:
Paused
Paused
File size: 1,976 Bytes
43dd1ac 949e1b1 43dd1ac 949e1b1 43dd1ac cb19688 43dd1ac c90a662 43dd1ac c90a662 43dd1ac |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
// note: there is no / at the end in the variable
// so we have to add it ourselves if needed
const apiUrl = process.env.VC_VIDEOCHAIN_API_URL
export const get = async <T>(path: string = '', defaultValue: T): Promise<T> => {
try {
const res = await fetch(`${apiUrl}/${path}`, {
method: "GET",
headers: {
Accept: "application/json",
Authorization: `Bearer ${process.env.VC_SECRET_ACCESS_TOKEN}`,
},
cache: 'no-store',
// we can also use this (see https://vercel.com/blog/vercel-cache-api-nextjs-cache)
// next: { revalidate: 1 }
})
// The return value is *not* serialized
// You can return Date, Map, Set, etc.
// Recommendation: handle errors
if (res.status !== 200) {
// This will activate the closest `error.js` Error Boundary
throw new Error('Failed to fetch data')
}
const data = await res.json()
return ((data as T) || defaultValue)
} catch (err) {
console.error(err)
return defaultValue
}
}
export const post = async <S, T>(path: string = '', payload: S, defaultValue: T): Promise<T> => {
try {
const res = await fetch(`${apiUrl}/${path}`, {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.VC_SECRET_ACCESS_TOKEN}`,
},
body: JSON.stringify(payload),
// cache: 'no-store',
// we can also use this (see https://vercel.com/blog/vercel-cache-api-nextjs-cache)
next: { revalidate: 1 }
})
// The return value is *not* serialized
// You can return Date, Map, Set, etc.
// Recommendation: handle errors
if (res.status !== 200) {
// This will activate the closest `error.js` Error Boundary
throw new Error('Failed to post data')
}
const data = await res.json()
return ((data as T) || defaultValue)
} catch (err) {
return defaultValue
}
} |