defmodule Home73kWeb.BlogFileController do
  use Home73kWeb, :controller

  @moduledoc """
  This controller handles path requests that didn't match an existing route,
  including the main Plug.Static for the / root path.

  To handle this situation, we'll check if the requested resource exists as
  a file under the blog content repo folder, by querying the Blog genserve.

  If it exists, we'll redirect to the blog content static path under /_
  Otherwise, we'll return 404 not found.
  """

  alias Home73k.Repo
  alias Home73k.Blog

  def index(conn, _params) do
    # What would be the content path of this requested resource?
    content_path = Repo.content_path() |> Path.join(conn.request_path)

    # Check if it exists in the Blog's known files
    Blog.get_files()
    |> Enum.member?(content_path)
    |> case do
      true -> redirect(conn, to: "/_#{conn.request_path}")
      false -> send_resp(conn, 404, "not found")
    end
  end
end