Packages
maru
0.11.0
0.14.0-pre.1
0.13.2
0.13.1
0.13.0
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.6
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.0
0.5.1
0.5.0
0.4.1
0.4.0
0.3.1
0.3.0
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
REST-like API micro-framework for elixir inspired by grape.
Current section
Files
Jump to
Current section
Files
lib/maru/builder/versioning/path.ex
defmodule Maru.Builder.Versioning.Path do
@moduledoc """
Adapter for path versioning module.
"""
use Maru.Builder.Versioning
@doc false
def get_version_plug(_opts), do: []
@doc false
def put_version_plug(version) do
[{Maru.Plugs.PutVersion, version, true}]
end
@doc false
def path_for_params(path, version) do
Enum.map(path, fn
{:version} -> version
x -> x
end)
end
@doc false
def conn_for_match(method, version, path) do
quote do
%Plug.Conn{
method: unquote(method),
path_info: unquote(path_for_match(path, version)),
}
end
end
@doc false
defp path_for_match(path, version) do
Enum.map(path, fn
{:version} -> version
x when is_atom(x) -> Macro.var(:_, nil)
x -> x
end)
end
@doc false
def put_version(conn, version) do
Plug.Conn.put_private(conn, :maru_version, version)
end
end