defmodule ExTeal.Api.CardResponder do @moduledoc """ API Responder that manages cards - `GET /dashboard/:name` - Return the dashboard and it's cards - `GET /resource/:resource_name/cards` - Return the cards for a resource """ alias ExTeal.Api.ErrorSerializer alias ExTeal.Dashboard alias ExTeal.Resource.Serializer def dashboard(conn, name) do case ExTeal.dashboard_for(conn, name) do {:ok, dashboard} -> dashboard |> Dashboard.cards_to_json(conn) |> as_json(conn) {:error, reason} -> ErrorSerializer.handle_error(conn, reason) end end def resource(conn, resource_name) do case ExTeal.resource_for(resource_name) do {:ok, resource} -> resource |> Dashboard.cards_to_json(conn) |> as_json(conn) {:error, reason} -> ErrorSerializer.handle_error(conn, reason) end end defp as_json(cards, conn) do {:ok, body} = Jason.encode(cards) Serializer.as_json(conn, body, 200) end end