Current section
Files
Jump to
Current section
Files
lib/config.ex
defmodule Harpoon.Config do
def for_module(), do: for_module(:global)
def for_module(mod) do
:harpoon
|> Application.get_env(mod, %{})
|> defaults()
end
def defaults(input) do
Map.merge(
%{pre: [], post: [], adapter: nil},
input
)
end
def put(mod, cfg) do
Application.put_env(:harpoon, mod, cfg)
end
def put_pre(middleware), do: put_pre(:global, middleware)
def put_pre(mod, middleware) do
result = for_module(mod)
put(mod, %{result | pre: Enum.uniq([middleware | result.pre])})
end
def put_post(middleware), do: put_pre(:global, middleware)
def put_post(mod, middleware) do
result = for_module(mod)
put(mod, %{result | pre: Enum.uniq([middleware | result.pre])})
end
end