Spaces:
Runtime error
Runtime error
| import axios from "axios"; | |
| import type { Session } from "next-auth"; | |
| import { env } from "../env/client.mjs"; | |
| export const post = async <T>(url: string, body: unknown, session?: Session) => { | |
| const headers = getHeaders(session); | |
| url = getUrl(url); | |
| return ( | |
| await axios.post(url, body, { | |
| headers, | |
| }) | |
| ).data as T; | |
| }; | |
| export const get = async <T>(url: string, session?: Session) => { | |
| const headers = getHeaders(session); | |
| url = getUrl(url); | |
| return ( | |
| await axios.get(url, { | |
| headers, | |
| }) | |
| ).data as T; | |
| }; | |
| export const delete_ = async <T>(url: string, accessToken?: string) => { | |
| const headers: Record<string, string> = {}; | |
| if (accessToken) headers.Authorization = `Bearer ${accessToken}`; | |
| url = getUrl(url); | |
| return ( | |
| await axios.delete(url, { | |
| headers, | |
| }) | |
| ).data as T; | |
| }; | |
| export function getHeaders(session?: Session) { | |
| const headers: Record<string, string> = {}; | |
| if (session?.accessToken) { | |
| headers.Authorization = `Bearer ${session.accessToken}`; | |
| } | |
| return headers; | |
| } | |
| function getUrl(url: string) { | |
| return env.NEXT_PUBLIC_BACKEND_URL + url; | |
| } | |
| export async function withRetries( | |
| fn: () => Promise<void>, | |
| onError: (error: unknown) => Promise<boolean>, // Function to handle the error and return whether to continue retrying | |
| retries = 3 | |
| ): Promise<void> { | |
| for (let i = 0; i < retries + 1; i++) { | |
| try { | |
| return await fn(); | |
| } catch (error) { | |
| if (!(await onError(error))) return; | |
| } | |
| } | |
| } | |