feat: migrate to new revanced api (#153)

* feat: migrate to new revanced api

* feat(download): migrate to /releases endpoint
This commit is contained in:
Ushie
2023-08-01 01:16:29 +03:00
committed by GitHub
parent a7c4b8f2e0
commit b9e50cf8d6
4 changed files with 48 additions and 76 deletions

View File

@@ -1,11 +1,11 @@
import * as settings from './settings';
// API Endpoints
import type { Patch, Repository, Tool } from '$lib/types';
import type { Patch, Repository, Metadata, Asset } from '$lib/types';
export type ReposData = Repository[];
export type PatchesData = { patches: Patch[]; packages: string[] };
export type ToolsData = { [repo: string]: Tool };
export type ReleaseData = { metadata: Metadata; assets: Asset[] };
async function get_json(endpoint: string) {
const url = `${settings.api_base_url()}/${endpoint}`;
@@ -16,48 +16,20 @@ async function repositories(): Promise<ReposData> {
return await get_json('contributors').then((json) => json.repositories);
}
async function tools(): Promise<ToolsData> {
const json = await get_json('tools');
// Make the data easier to work with.
let map: Map<string, Tool> = new Map();
for (const tool of json['tools']) {
const repo: string = tool.repository;
if (!map.has(repo)) {
map.set(repo, {
version: tool.version,
repository: repo,
// Just use the timestamp of the first one we find.
timestamp: tool.timestamp,
assets: []
});
}
let value = map.get(repo)!!;
value.assets.push({
name: tool.name,
size: tool.size,
url: tool.browser_download_url,
content_type: tool.content_type
});
map.set(repo, value);
}
return Object.fromEntries(map);
}
async function manager(): Promise<Tool> {
return await tools().then((data) => data['revanced/revanced-manager']);
async function manager(): Promise<ReleaseData> {
const json = await get_json('v2/revanced-manager/releases/latest');
// console.log(json.release.metadata.tag_name);
console.log(json.release.assets[0].browser_download_url);
return { metadata: json.release.metadata, assets: json.release.assets };
}
async function patches(): Promise<PatchesData> {
const json = await get_json('patches');
const json = await get_json('v2/patches/latest');
const packagesWithCount: { [key: string]: number } = {};
// gets packages and patch count
for (let i = 0; i < json.length; i++) {
json[i].compatiblePackages.forEach((pkg: Patch) => {
for (let i = 0; i < json.patches.length; i++) {
json.patches[i].compatiblePackages.forEach((pkg: Patch) => {
packagesWithCount[pkg.name] = (packagesWithCount[pkg.name] || 0) + 1;
});
}
@@ -67,7 +39,7 @@ async function patches(): Promise<PatchesData> {
.sort((a, b) => b[1] - a[1])
.map((pkg) => pkg[0]);
return { patches: json, packages };
return { patches: json.patches, packages };
}
export const staleTime = 5 * 60 * 1000;