From b9e50cf8d67eed033cebc3adcf22d4ecfd4f313f Mon Sep 17 00:00:00 2001 From: Ushie Date: Tue, 1 Aug 2023 01:16:29 +0300 Subject: [PATCH] feat: migrate to new revanced api (#153) * feat: migrate to new revanced api * feat(download): migrate to /releases endpoint --- .env | 2 +- src/data/api/index.ts | 50 ++++++------------------- src/lib/types.ts | 64 ++++++++++++++++---------------- src/routes/download/+page.svelte | 8 ++-- 4 files changed, 48 insertions(+), 76 deletions(-) diff --git a/.env b/.env index 7905676..7669f5d 100644 --- a/.env +++ b/.env @@ -1 +1 @@ -RV_API_URL="https://releases.revanced.app" +RV_API_URL="https://api.revanced.app" diff --git a/src/data/api/index.ts b/src/data/api/index.ts index 5614536..a41251c 100644 --- a/src/data/api/index.ts +++ b/src/data/api/index.ts @@ -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 { return await get_json('contributors').then((json) => json.repositories); } -async function tools(): Promise { - const json = await get_json('tools'); - // Make the data easier to work with. - let map: Map = 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 { - return await tools().then((data) => data['revanced/revanced-manager']); +async function manager(): Promise { + 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 { - 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 { .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; diff --git a/src/lib/types.ts b/src/lib/types.ts index 827bbe7..9e6a8e0 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -1,49 +1,49 @@ export interface Contributor { - login: string; - avatar_url: string; - html_url: string; + login: string; + avatar_url: string; + html_url: string; } export interface Repository { - name: string; - contributors: Contributor[]; + name: string; + contributors: Contributor[]; } export interface Patch { - name: string; - description: string; - version: string; - excluded: boolean; - deprecated: boolean; - dependencies: string[]; - options: PatchOption[]; - compatiblePackages: CompatiblePackage[]; + name: string; + description: string; + version: string; + excluded: boolean; + dependencies: string[]; + options: PatchOption[]; + compatiblePackages: CompatiblePackage[]; } export interface CompatiblePackage { - name: string; - versions: string[]; + name: string; + versions: string[]; } export interface PatchOption { - key: string; - title: string; - description: string; - required: boolean; - choices: string[]; + key: string; + title: string; + description: string; + required: boolean; + choices: string[]; } export interface Asset { - name: string; - size: string|null; - url: string; - content_type: string; -}; - -export interface Tool { - repository: string; - version: string; - timestamp: string; - assets: Asset[]; -}; + name: string; + content_type: string; + browser_download_url: string; +} +export interface Metadata { + tag_name: string; + name: string; + draft: boolean; + prerelease: boolean; + created_at: string; + published_at: string; + body: string; +} diff --git a/src/routes/download/+page.svelte b/src/routes/download/+page.svelte index 31a0b26..e1920a3 100644 --- a/src/routes/download/+page.svelte +++ b/src/routes/download/+page.svelte @@ -52,7 +52,7 @@ @@ -68,17 +68,17 @@ {#if !isAndroid || androidVersion < 8} {:else} {/if}