Claude set up a '/labels' endpoint

This commit is contained in:
Gavin McDonald
2025-10-17 18:25:45 -04:00
parent 679c7c75d8
commit 4a7e966744
5 changed files with 222 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
defmodule LabelmakerWeb.LabelsController do
use LabelmakerWeb, :controller
@label_dir Path.join(:code.priv_dir(:labelmaker), "static/labels")
def index(conn, _params) do
labels = list_labels()
render(conn, :index, labels: labels)
end
defp list_labels do
case File.ls(@label_dir) do
{:ok, files} ->
files
|> Enum.filter(&String.ends_with?(&1, ".png"))
|> Enum.map(fn filename ->
filepath = Path.join(@label_dir, filename)
stat = File.stat!(filepath)
%{
filename: filename,
filepath: filepath,
size: stat.size,
modified: stat.mtime,
url: "/labels/#{filename}"
}
end)
|> Enum.sort_by(& &1.modified, :desc)
{:error, :enoent} ->
# Directory doesn't exist yet
[]
{:error, _reason} ->
[]
end
end
end