etheryo/frontend/src/lib/ts/load.ts

43 lines
1.1 KiB
TypeScript

export async function load_api<T = any>(url: string): Promise<{
data: T | null;
error: Error | null;
}> {
let data: T | null = null;
let error: Error | null = null;
try {
const res = await fetch(url);
if (!res.ok) throw new Error(`Failed to fetch: ${res.status} ${res.statusText}`);
data = await res.json();
} catch (err) {
error = err instanceof Error ? err : new Error('Unknown error');
}
return {
data,
error,
};
}
export async function getCommitCount(repo: string): Promise<{
count: Number | null;
error: Error | null;
}> {
let error = null;
let pageCount = null;
try {
const res = await fetch(`https://git.etheryo.fr//api/v1/repos/${repo}/commits?limit=1&page=1`);
if (!res.ok) throw new Error(`Failed to fetch: ${res.status} ${res.statusText}`);
else pageCount = res.headers.get('X-Pagecount');
}
catch (err) {
error = err instanceof Error ? err : new Error('Unknown error');
}
return {
count: pageCount ? parseInt(pageCount) : null,
error: error,
};
}