Current section

Files

Jump to
elli_swagger src elli_swagger.erl
Raw

src/elli_swagger.erl

-module(elli_swagger).
-export([get_json_documentation/0]).
get_json_documentation() ->
Callback = application:get_env(elli_swagger, elli_swagger_documentation_callback, undefined),
Metadata = application:get_env(elli_swagger, swagger_metadata, #{openapi => <<"3.0.0">>}),
Documentation = get_documentation(Callback, #{}),
jsx:encode(maps:merge(Metadata, Documentation)).
get_documentation(undefined, Acc) ->
Acc;
get_documentation([], Accumulator) ->
Accumulator;
get_documentation([Callback|CallbackList], Accumulator) ->
Documentation = Callback:documentation(),
get_documentation(CallbackList, maps:merge(Documentation, Accumulator));
get_documentation(Callback, #{}) ->
Callback:documentation().