29 lines
671 B
Elixir
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
|