Packages

Support legacy API versions without the headache of legacy code

Current section

Files

Jump to
phoenix_api_versions lib phoenix_api_versions view.ex
Raw

lib/phoenix_api_versions/view.ex

defmodule PhoenixApiVersions.View do
defmacro __using__(_) do
quote do
alias Plug.Conn
alias PhoenixApiVersions
@doc """
Catch calls to `render/2`, dispatch to the otherwise matching clause of `render/2`,
and then transform the output properly depending on the API version of the request.
"""
def render(template, %{conn: %{private: %{api_versioning_process_output?: true}}} = assigns) do
conn = Conn.put_private(assigns.conn, PhoenixApiVersions.private_process_output_key(), false)
assigns = Map.put(assigns, :conn, conn)
output = render(template, assigns)
PhoenixApiVersions.transform_response(output, assigns)
end
end
end
end