mirror of
https://github.com/Snigdha-OS/package-browser.git
synced 2025-09-09 14:15:03 +02:00
chore: initiate the website file
This commit is contained in:
36
src/services/api.ts
Normal file
36
src/services/api.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import { Package } from '../types';
|
||||
|
||||
const MIRRORS = [
|
||||
'https://raw.githubusercontent.com/d3v1l0n/snigdhaos-core/refs/heads/master/packages.txt',
|
||||
'https://raw.githubusercontent.com/archlinux/svntogit-packages/master/packages.txt'
|
||||
];
|
||||
|
||||
async function fetchFromMirror(url: string): Promise<Package[]> {
|
||||
const response = await fetch(url);
|
||||
const text = await response.text();
|
||||
|
||||
return text
|
||||
.split('\n')
|
||||
.filter(Boolean)
|
||||
.map((line) => {
|
||||
const [name, version, ...descParts] = line.split(' ');
|
||||
return {
|
||||
name,
|
||||
version,
|
||||
description: descParts.join(' '),
|
||||
repository: 'core' as const,
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
export async function fetchPackages(): Promise<Package[]> {
|
||||
for (const mirror of MIRRORS) {
|
||||
try {
|
||||
return await fetchFromMirror(mirror);
|
||||
} catch (error) {
|
||||
console.warn(`Failed to fetch from mirror ${mirror}:`, error);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
throw new Error('All mirrors failed to respond');
|
||||
}
|
Reference in New Issue
Block a user