defmodule ZoeyscomputerWeb.GistPreviewController do
  use ZoeyscomputerWeb, :controller

  require Logger
  alias Zoeyscomputer.Gists

  def show(conn, %{"id" => id}) do
    gist = Gists.get_gist!(id)

    {:ok, webp} = ZoeyscomputerWeb.GistLive.OgImage.get_webp(gist)

    conn
    |> put_resp_content_type("image/webp")
    |> put_resp_header("cache-control", "public, max-age=300")
    |> send_resp(200, webp)
    |> halt()
  end

  def raw(conn, %{"id" => id}) do
    gist = Gists.get_gist!(id)

    webp = ZoeyscomputerWeb.GistLive.OgImage.generate_preview(gist)

    conn
    |> put_resp_content_type("image/svg+xml")
    |> put_resp_header("cache-control", "public, max-age=300")
    |> send_resp(200, webp)
    |> halt()
  end
end
