diff options
| author | Pinapelz <yukais@pinapelz.com> | 2026-06-03 17:22:48 -0700 |
|---|---|---|
| committer | Pinapelz <yukais@pinapelz.com> | 2026-06-03 17:22:48 -0700 |
| commit | 14172f9dd64ce91ba5cf51f82c53deb6a81d68a6 (patch) | |
| tree | 5e12ce4e30ecaed9a2aac48d2959d99a4d8b4ef7 /src/helpers/fetchSolution.ts | |
| parent | 818db3ef4aadf489dba5ba8ba4f3bb4e150f0b22 (diff) | |
create daily/unlimited mode, CDN audio file for daily mode
Diffstat (limited to 'src/helpers/fetchSolution.ts')
| -rw-r--r-- | src/helpers/fetchSolution.ts | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/helpers/fetchSolution.ts b/src/helpers/fetchSolution.ts index 2ca2e68..10c4fa1 100644 --- a/src/helpers/fetchSolution.ts +++ b/src/helpers/fetchSolution.ts @@ -25,14 +25,27 @@ function getObfuscationKey(): Uint8Array { return new TextEncoder().encode(SALT + date); } +function decryptResponse(data: string): Song { + const obfuscationKey = getObfuscationKey(); + const obfuscatedBytes = hexToBytes(data); + const decrypted = xor(obfuscatedBytes, obfuscationKey); + return JSON.parse(new TextDecoder().decode(decrypted)) as Song; +} + export async function getDailySolution(): Promise<Song> { const solutionData = await fetch(`${API_URL}/today`); if (!solutionData.ok) { throw new Error(`Failed to fetch solution: ${solutionData.statusText}`); } const { data } = await solutionData.json(); - const obfuscationKey = getObfuscationKey(); - const obfuscatedBytes = hexToBytes(data); - const decrypted = xor(obfuscatedBytes, obfuscationKey); - return JSON.parse(new TextDecoder().decode(decrypted)) as Song; + return decryptResponse(data); +} + +export async function getSelectSolution(): Promise<Song> { + const solutionData = await fetch(`${API_URL}/select`); + if (!solutionData.ok) { + throw new Error(`Failed to fetch solution: ${solutionData.statusText}`); + } + const { data } = await solutionData.json(); + return decryptResponse(data); } |
