import { getUriWithOrg } from "@services/config/config"; export const RequestBody = (method: string, data: any, next: any) => { let HeadersConfig = new Headers({ "Content-Type": "application/json" }); let options: any = { method: method, headers: HeadersConfig, redirect: "follow", credentials: "include", // Next.js next: next, }; if (data) { options.body = JSON.stringify(data); } return options; }; export const RequestBodyWithAuthHeader = (method: string, data: any, next: any, token: string) => { let HeadersConfig = new Headers(token ? { "Content-Type": "application/json", Authorization: `Bearer ${token}` } : { "Content-Type": "application/json" }); let options: any = { method: method, headers: HeadersConfig, redirect: "follow", credentials: "include", body: data, // Next.js next: next, }; return options; }; export const RequestBodyForm = (method: string, data: any, next: any) => { let HeadersConfig = new Headers({}); let options: any = { method: method, headers: HeadersConfig, redirect: "follow", credentials: "include", body: data, // Next.js next: next, }; return options; }; export const swrFetcher = async (url: string) => { // Create the request options let HeadersConfig = new Headers({ "Content-Type": "application/json" }); let options: any = { method: "GET", headers: HeadersConfig, redirect: "follow", credentials: "include", }; try { // Fetch the data const request = await fetch(url, options); let res = errorHandling(request); // Return the data return res; } catch (error: any) { throw error; } }; export const errorHandling = (res: any) => { if (!res.ok) { const error: any = new Error(`${res.statusText}`); error.status = res.status; throw error; } return res.json(); }; type CustomResponseTyping = { success: boolean; data: any; status: number; HTTPmessage: string; }; export const getResponseMetadata = async (fetch_result: any): Promise => { const json = await fetch_result.json(); if (fetch_result.status === 200) { return { success: true, data: json, status: fetch_result.status, HTTPmessage: fetch_result.statusText }; } else { return { success: false, data: json, status: fetch_result.status, HTTPmessage: fetch_result.statusText }; } }; export const revalidateTags = async (tags: string[], orgslug: string) => { const url = getUriWithOrg(orgslug, ""); tags.forEach((tag) => { fetch(`${url}/api/revalidate?tag=${tag}`); }); };