From 94837b601fb757ba6582602264b598df39f303fe Mon Sep 17 00:00:00 2001 From: metamuffin Date: Thu, 27 Mar 2025 20:25:41 +0100 Subject: read entry resource --- viewer/main.ts | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/viewer/main.ts b/viewer/main.ts index 4320b68..5aa1df6 100644 --- a/viewer/main.ts +++ b/viewer/main.ts @@ -17,3 +17,45 @@ function draw() { canvas.addEventListener("resize", () => draw()) draw() +class Resource { + constructor(public hash: Uint8Array) { } + toString() { + return Array.from(this.hash) + .map(e => e.toString(16).padStart(2, "0")) + .join("") + } + async download_raw() { + const res = await fetch(`http://127.0.0.1:28556/${this.toString()}`) + if (!res.ok) throw new Error("aaaa"); + return await res.bytes() + } +} + +function read_res_table(buffer: Uint8Array): { [key: string]: Uint8Array[] } { + const view = new DataView(buffer.buffer) + let p = 0 + const out: { [key: string]: Uint8Array[] } = {} + while (p < view.byteLength) { + const key_len = view.getInt16(p, true) + p += 2 + const value_len = view.getInt16(p, true) + p += 2 + const key = String.fromCharCode(...buffer.slice(p, p + key_len)) + p += key_len + const value = buffer.slice(p, p + value_len) + p += value_len + out[key] ??= [] + out[key].push(value) + } + return out +} + +async function init() { + const resp = await fetch("http://127.0.0.1:28556/entry") + if (!resp.ok) throw new Error("aaaa"); + const entry_res = new Resource(await resp.bytes()) + + const entry = await entry_res.download_raw() + console.log(read_res_table(entry)) +} +init() \ No newline at end of file -- cgit v1.2.3-70-g09d2