diff --git a/src/routes/admin/index.svelte b/src/routes/admin/index.svelte index 141b5bf..8853c0b 100644 --- a/src/routes/admin/index.svelte +++ b/src/routes/admin/index.svelte @@ -1 +1,36 @@ + +

Administration Area

+

Add a cat

+ + + +{#if showSuccess} + Successfully beamed up the kitty! +{/if} + + diff --git a/src/routes/cat/cats.json.ts b/src/routes/cat/cats.json.ts new file mode 100644 index 0000000..eb6fb24 --- /dev/null +++ b/src/routes/cat/cats.json.ts @@ -0,0 +1,47 @@ +function encode(input: Uint8Array) { + const keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + let output = ''; + let chr1, chr2, chr3, enc1, enc2, enc3, enc4; + let i = 0; + + while (i < input.length) { + chr1 = input[i++]; + chr2 = i < input.length ? input[i++] : Number.NaN; // Not sure if the index + chr3 = i < input.length ? input[i++] : Number.NaN; // checks are needed here + + enc1 = chr1 >> 2; + enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); + enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); + enc4 = chr3 & 63; + + if (isNaN(chr2)) { + enc3 = enc4 = 64; + } else if (isNaN(chr3)) { + enc4 = 64; + } + output += keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4); + } + return output; +} + +export async function GET({ request, params }) { + const response = await fetch('https://catapi.cf4.workers.dev/list'); + const asJson = await response.json(); + + const resultcats = await Promise.all( + asJson.map(async (cat) => { + const catimage = await fetch(`https://catapi.cf4.workers.dev/${cat.key}`); + const img = await catimage.arrayBuffer(); + + const b64 = encode(new Uint8Array(img)); + return { ...cat, b64 }; + }), + ); + + return { + status: response.status, + body: { + cats: response.ok && resultcats, + }, + }; +} diff --git a/src/routes/cat/index.svelte b/src/routes/cat/index.svelte new file mode 100644 index 0000000..2aff911 --- /dev/null +++ b/src/routes/cat/index.svelte @@ -0,0 +1,29 @@ + + + + +{#each cats as cat} + cat +{/each} + +