---
import { createCaller } from "#lib/caller";
import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
import { pdfVerbrauchsausweisWohnen } from "#lib/pdf/pdfVerbrauchsausweisWohnen";

const base64 = Astro.url.searchParams.get("base64");
let ausweis: VerbrauchsausweisWohnenClient | null = null;
if (base64) {
	const buffer = Buffer.from(base64, "base64");
	const json = buffer.toString("utf-8");
	ausweis = JSON.parse(json) as VerbrauchsausweisWohnenClient;
} else {
	const uidAusweis = Astro.url.searchParams.get("uid");

	if (!uidAusweis) {
		return Astro.redirect("/404");
	}

	const caller = createCaller(Astro);

	ausweis = await caller.v1.verbrauchsausweisWohnen.get({
		uid: uidAusweis
	});
}

const pdf = await pdfVerbrauchsausweisWohnen(ausweis);

return new Response(pdf, {
	headers: {
		"Content-Type": "application/pdf",
	},
});
---
