asciinema.org/lib/asciinema/trailing_format.ex

29 lines
671 B
Elixir

defmodule Asciinema.TrailingFormat do
@known_extensions ["json", "png", "gif"]
def init(opts), do: opts
def call(conn, _opts) do
case conn.path_info do
[] ->
conn
path_info ->
%{conn | path_info: rewrite_path_info(path_info)}
end
end
defp rewrite_path_info(path_info) do
path_info
|> List.last
|> String.split(".")
|> Enum.reverse
|> case do
[format | fragments] when format in @known_extensions ->
id = fragments |> Enum.reverse |> Enum.join(".")
path_info |> List.replace_at(-1, id) |> List.insert_at(-1, format)
_ ->
path_info
end
end
end