defmodule OpenAgentsWeb.LabelJSON do
@moduledoc """
Renders GitHub-compatible label JSON.
"""
def render("index.json", %{labels: labels} = assigns) do
%{labels: Enum.map(labels, &label_json(&1, assigns))}
end
def render("show.json", %{label: label} = assigns) do
label_json(label, assigns)
end
defp label_json(label, assigns) do
owner = Map.get(assigns, :owner, "OpenAgents")
repo = Map.get(assigns, :repo, "openagents")
%{
id: label.id,
name: label.name,
color: label.color,
description: label.description,
default: false,
url:
"#{url_base(assigns)}/api/v1/repos/#{owner}/#{repo}/labels/#{URI.encode(label.name, &URI.char_unreserved?/1)}"
}
end
defp url_base(assigns) do
Map.get(assigns, :url_base) || String.trim_trailing(OpenAgentsWeb.Endpoint.url(), "/")
end
end