diff options
author | Guido Günther <agx@sigxcpu.org> | 2018-05-08 15:42:38 +0200 |
---|---|---|
committer | Guido Günther <agx@sigxcpu.org> | 2018-05-08 16:29:14 +0200 |
commit | d03d1f7bcdb62d68d577c3239033e92f43a583dd (patch) | |
tree | 2f6e64d778fc8772d38d1a6a4b7b244aa41ea770 /src/ldapsp_version.erl | |
parent | 6ba2973ed2e02046ebfdf343f88b324080240432 (diff) |
Add version API
used by Foreman 1.17
Diffstat (limited to 'src/ldapsp_version.erl')
-rw-r--r-- | src/ldapsp_version.erl | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/ldapsp_version.erl b/src/ldapsp_version.erl new file mode 100644 index 0000000..0d1e749 --- /dev/null +++ b/src/ldapsp_version.erl @@ -0,0 +1,52 @@ +%%------------------------------------------------------------------- +%% This file is part of ldapsp. +%% +%% Copyright (C) 2016 Guido Günther <agx@sigxcpu.org> +%% +%% ldapsp is free software: you can redistribute it and/or modify +%% it under the terms of the GNU General Public License as published by +%% the Free Software Foundation, either version 3 of the License, or +%% (at your option) any later version. +%% +%% ldapsp is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +%% GNU General Public License for more details. +%% +%% You should have received a copy of the GNU General Public License +%% along with ldapsp. If not, see <http://www.gnu.org/licenses/>. +%%------------------------------------------------------------------- +-module(ldapsp_version). +-export([ + init/1, + routes/0, + to_html/2, + to_json/2, + content_types_provided/2 +]). + +-include_lib("webmachine/include/webmachine.hrl"). + +-spec init(list()) -> {ok, term()}. +init([]) -> + {ok, undefined}. + +%% @doc Return the routes this module should respond to. +routes() -> + [{["version"], ?MODULE, []}]. + +-spec to_json(wrq:reqdata(), term()) -> {iodata(), wrq:reqdata(), term()}. +to_json(ReqData, State) -> + [Ver | _] = [ V || {App, _, V} <- application:which_applications(), App == ldapsp], + Version = list_to_binary(Ver), + Resp = mochijson2:encode([{"version", Version}, + {"modules", [{"realm", Version}]}]), + {Resp, ReqData, State}. + +to_html(ReqData, State) -> + to_json(ReqData, State). + +content_types_provided(RD, Ctx) -> + {[{"application/json", to_json}, + {"text/html", to_html}], + RD, Ctx}. |