src/trails_handler.erl

%%% @doc Trails handler.
%%%      This behavior defines the callback `trails/0' which must be
%%%      implemented by the different `cowboy' handlers in your project.
-module(trails_handler).

%% API
-export([trails/1]).

%% @doc Returns the cowboy routes defined in the called module.
-callback trails() -> trails:trails().
-callback trails(Opts :: map()) -> trails:trails().
-optional_callbacks([trails/0, trails/1]).

-spec trails(module() | {module(), map()}) -> trails:trails().
trails({Module, Opts}) -> Module:trails(Opts);
trails(Module) -> Module:trails().