2023-08-25 07:11:33 +00:00
|
|
|
export const fetchLeafcutter = async (url: string, options: any) => {
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
|
|
const headers = {
|
|
|
|
|
'X-Opensearch-Username': process.env.OPENSEARCH_USER!,
|
|
|
|
|
'X-Opensearch-Password': process.env.OPENSEARCH_PASSWORD!,
|
|
|
|
|
'X-Leafcutter-User': token.email.toLowerCase()
|
|
|
|
|
};
|
|
|
|
|
*/
|
|
|
|
|
const fetchData = async (url: string, options: any) => {
|
|
|
|
|
try {
|
|
|
|
|
const res = await fetch(url, options);
|
|
|
|
|
const json = await res.json();
|
|
|
|
|
return json;
|
|
|
|
|
} catch (error) {
|
2025-01-22 17:50:38 +01:00
|
|
|
console.error({ error });
|
2023-08-25 07:11:33 +00:00
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const data = await fetchData(url, options);
|
|
|
|
|
|
|
|
|
|
if (!data) {
|
|
|
|
|
const csrfURL = `${process.env.NEXT_PUBLIC_LEAFCUTTER_URL}/api/auth/csrf`;
|
|
|
|
|
const csrfData = await fetchData(csrfURL, {});
|
|
|
|
|
const authURL = `${process.env.NEXT_PUBLIC_LEAFCUTTER_URL}/api/auth/callback/credentials`;
|
|
|
|
|
const authData = await fetchData(authURL, { method: "POST" });
|
|
|
|
|
if (!authData) {
|
|
|
|
|
return null;
|
|
|
|
|
} else {
|
|
|
|
|
return await fetchData(url, options);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
return data;
|
|
|
|
|
}
|
|
|
|
|
};
|