Packages

An elixir plug to support legacy APIs that use a rails-like trailing format: http://api.dev/resources.format

Current section

Files

Jump to
trailing_format_plug lib trailing_format_plug.ex
Raw

lib/trailing_format_plug.ex

defmodule TrailingFormatPlug do
import Plug.Conn
def init(options), do: options
def call(conn, opts) do
conn.path_info |> List.last |> String.split(".") |> Enum.reverse |> case do
[ _ ] -> conn
[ format | fragments ] ->
new_path = fragments |> Enum.reverse |> Enum.join(".")
path_fragments = List.replace_at conn.path_info, -1, new_path
params = Plug.Conn.fetch_params(conn).params
|> Dict.put("format", format)
%{conn | path_info: path_fragments, params: params}
end
end
end