-module(mod_presence). -behaviour(gen_mod). -include("jlib.hrl"). -export([start/2, stop/1, mod_opt_type/1]). -export([set_presence/4, unset_presence/4]). start(Host, _Opts) -> ejabberd_hooks:add(set_presence_hook, Host, ?MODULE, set_presence, 50), ejabberd_hooks:add(unset_presence_hook, Host, ?MODULE, unset_presence, 50), ok. stop(Host) -> ejabberd_hooks:delete(set_presence_hook, Host, ?MODULE, set_presence, 50), ejabberd_hooks:delete(unset_presence_hook, Host, ?MODULE, unset_presence, 50), ok. set_presence(User, Server, Resource, XMLEl) -> Show = fxml:get_subtag_cdata(XMLEl, <<"show">>), %% away, etc io:format("set_presence: ~p~n", [{User, Server, Resource, Show}]), report(<<"set_presence">>, User, Server, Resource, Show), ok. unset_presence(User, Server, Resource, StatusMsg) -> io:format("unset_presence: ~p~n", [{User, Server, Resource, StatusMsg}]), report(<<"unset_presence">>, User, Server, Resource, StatusMsg), ok. report(Event, User, Server, Resource, Status) -> Payload = jiffy:encode( {[{<<"event">>, Event}, {<<"user">>, User}, {<<"domain">>, Server}, {<<"resource">>, Resource}, {<<"status">>, Status}]}), case httpc:request(post,{"http://localhost:8000/presence", [], "application/json", Payload}, [{timeout, 15000},{connect_timeout, 15000}], [{body_format, binary}]) of {ok, {{_, 200, _}, _Headers, _RespBody}} -> ok; _ -> ok end. mod_opt_type(_) -> [].