jbilcke-hf's picture
jbilcke-hf HF staff
ready for release (sort of)
43dd1ac
raw
history blame
2.16 kB
// 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 {
console.log("fetching:", `${apiUrl}/${path} with Bearer ${process.env.VC_SECRET_ACCESS_TOKEN}`)
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: 10 }
})
console.log("res:", res)
// 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()
console.log("data:", data)
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: 10 }
})
// 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) {
console.error(err)
return defaultValue
}
}