import type { APIRoute } from "astro"
import { getCollection } from "astro:content"

function notFoundText(locals: unknown) {
  if (typeof locals !== "object" || locals === null || !("t" in locals)) {
    return "share.not_found"
  }
  const t = (locals as { t?: unknown }).t
  if (typeof t !== "function") {
    return "share.not_found"
  }
  const text = t("share.not_found")
  if (typeof text === "string" && text.length > 0) {
    return text
  }
  return "share.not_found"
}

export const GET: APIRoute = async ({ params, locals }) => {
  const slug = params.slug || "index"
  const docs = await getCollection("docs")
  const doc = docs.find((d) => d.id === slug)
  const notFound = notFoundText(locals)

  if (!doc) {
    return new Response(notFound, { status: 404, statusText: notFound })
  }

  return new Response(doc.body, {
    headers: {
      "Content-Type": "text/plain; charset=utf-8",
    },
  })
}