43 lines
1.1 KiB
TypeScript
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,
|
|
};
|
|
}
|
|
|