diff options
Diffstat (limited to 'src/mod_adhoc.erl')
-rw-r--r-- | src/mod_adhoc.erl | 49 |
1 files changed, 24 insertions, 25 deletions
diff --git a/src/mod_adhoc.erl b/src/mod_adhoc.erl index f6a61fe03..edba1cebe 100644 --- a/src/mod_adhoc.erl +++ b/src/mod_adhoc.erl @@ -40,6 +40,7 @@ -include("logger.hrl"). -include("xmpp.hrl"). +-include("translate.hrl"). start(Host, _Opts) -> gen_iq_handler:add_iq_handler(ejabberd_local, Host, @@ -89,12 +90,11 @@ reload(_Host, _NewOpts, _OldOpts) -> ok. %------------------------------------------------------------------------- - +-spec get_local_commands(mod_disco:items_acc(), jid(), jid(), binary(), binary()) -> mod_disco:items_acc(). get_local_commands(Acc, _From, #jid{server = Server, lserver = LServer} = _To, <<"">>, Lang) -> - Display = gen_mod:get_module_opt(LServer, ?MODULE, - report_commands_node), + Display = mod_adhoc_opt:report_commands_node(LServer), case Display of false -> Acc; _ -> @@ -104,7 +104,7 @@ get_local_commands(Acc, _From, end, Nodes = [#disco_item{jid = jid:make(Server), node = ?NS_COMMANDS, - name = translate:translate(Lang, <<"Commands">>)}], + name = translate:translate(Lang, ?T("Commands"))}], {result, Items ++ Nodes} end; get_local_commands(_Acc, From, @@ -118,11 +118,10 @@ get_local_commands(Acc, _From, _To, _Node, _Lang) -> Acc. %------------------------------------------------------------------------- - +-spec get_sm_commands(mod_disco:items_acc(), jid(), jid(), binary(), binary()) -> mod_disco:items_acc(). get_sm_commands(Acc, _From, #jid{lserver = LServer} = To, <<"">>, Lang) -> - Display = gen_mod:get_module_opt(LServer, ?MODULE, - report_commands_node), + Display = mod_adhoc_opt:report_commands_node(LServer), case Display of false -> Acc; _ -> @@ -132,7 +131,7 @@ get_sm_commands(Acc, _From, end, Nodes = [#disco_item{jid = To, node = ?NS_COMMANDS, - name = translate:translate(Lang, <<"Commands">>)}], + name = translate:translate(Lang, ?T("Commands"))}], {result, Items ++ Nodes} end; get_sm_commands(_Acc, From, @@ -142,36 +141,34 @@ get_sm_commands(_Acc, From, get_sm_commands(Acc, _From, _To, _Node, _Lang) -> Acc. %------------------------------------------------------------------------- - +-spec get_local_identity([identity()], jid(), jid(), binary(), binary()) -> [identity()]. %% On disco info request to the ad-hoc node, return automation/command-list. get_local_identity(Acc, _From, _To, ?NS_COMMANDS, Lang) -> [#identity{category = <<"automation">>, type = <<"command-list">>, - name = translate:translate(Lang, <<"Commands">>)} + name = translate:translate(Lang, ?T("Commands"))} | Acc]; get_local_identity(Acc, _From, _To, <<"ping">>, Lang) -> [#identity{category = <<"automation">>, type = <<"command-node">>, - name = translate:translate(Lang, <<"Ping">>)} + name = translate:translate(Lang, ?T("Ping"))} | Acc]; get_local_identity(Acc, _From, _To, _Node, _Lang) -> Acc. %------------------------------------------------------------------------- - +-spec get_sm_identity([identity()], jid(), jid(), binary(), binary()) -> [identity()]. %% On disco info request to the ad-hoc node, return automation/command-list. get_sm_identity(Acc, _From, _To, ?NS_COMMANDS, Lang) -> [#identity{category = <<"automation">>, type = <<"command-list">>, - name = translate:translate(Lang, <<"Commands">>)} + name = translate:translate(Lang, ?T("Commands"))} | Acc]; get_sm_identity(Acc, _From, _To, _Node, _Lang) -> Acc. %------------------------------------------------------------------------- --spec get_local_features({error, stanza_error()} | {result, [binary()]} | empty, - jid(), jid(), binary(), binary()) -> - {error, stanza_error()} | {result, [binary()]} | empty. +-spec get_local_features(mod_disco:features_acc(), jid(), jid(), binary(), binary()) -> mod_disco:features_acc(). get_local_features(Acc, _From, _To, <<"">>, _Lang) -> Feats = case Acc of {result, I} -> I; @@ -188,7 +185,7 @@ get_local_features(Acc, _From, _To, _Node, _Lang) -> Acc. %------------------------------------------------------------------------- - +-spec get_sm_features(mod_disco:features_acc(), jid(), jid(), binary(), binary()) -> mod_disco:features_acc(). get_sm_features(Acc, _From, _To, <<"">>, _Lang) -> Feats = case Acc of {result, I} -> I; @@ -201,13 +198,15 @@ get_sm_features(_Acc, _From, _To, ?NS_COMMANDS, get_sm_features(Acc, _From, _To, _Node, _Lang) -> Acc. %------------------------------------------------------------------------- - +-spec process_local_iq(iq()) -> iq() | ignore. process_local_iq(IQ) -> process_adhoc_request(IQ, local). +-spec process_sm_iq(iq()) -> iq() | ignore. process_sm_iq(IQ) -> process_adhoc_request(IQ, sm). +-spec process_adhoc_request(iq(), sm | local) -> iq() | ignore. process_adhoc_request(#iq{from = From, to = To, type = set, lang = Lang, sub_els = [#adhoc_command{} = SubEl]} = IQ, Type) -> @@ -224,7 +223,7 @@ process_adhoc_request(#iq{from = From, to = To, ignore -> ignore; empty -> - Txt = <<"No hook has processed this command">>, + Txt = ?T("No hook has processed this command"), xmpp:make_error(IQ, xmpp:err_item_not_found(Txt, Lang)); {error, Error} -> xmpp:make_error(IQ, Error); @@ -234,8 +233,7 @@ process_adhoc_request(#iq{from = From, to = To, process_adhoc_request(#iq{} = IQ, _Hooks) -> xmpp:make_error(IQ, xmpp:err_bad_request()). --spec ping_item(empty | {error, stanza_error()} | {result, [disco_item()]}, - jid(), jid(), binary()) -> {result, [disco_item()]}. +-spec ping_item(mod_disco:items_acc(), jid(), jid(), binary()) -> {result, [disco_item()]}. ping_item(Acc, _From, #jid{server = Server} = _To, Lang) -> Items = case Acc of @@ -244,7 +242,7 @@ ping_item(Acc, _From, #jid{server = Server} = _To, end, Nodes = [#disco_item{jid = jid:make(Server), node = <<"ping">>, - name = translate:translate(Lang, <<"Ping">>)}], + name = translate:translate(Lang, ?T("Ping"))}], {result, Items ++ Nodes}. -spec ping_command(adhoc_command(), jid(), jid(), adhoc_command()) -> @@ -259,13 +257,14 @@ ping_command(_Acc, _From, _To, status = completed, notes = [#adhoc_note{ type = info, - data = translate:translate(Lang, <<"Pong">>)}]}); + data = translate:translate(Lang, ?T("Pong"))}]}); true -> - Txt = <<"Incorrect value of 'action' attribute">>, + Txt = ?T("Incorrect value of 'action' attribute"), {error, xmpp:err_bad_request(Txt, Lang)} end; ping_command(Acc, _From, _To, _Request) -> Acc. +-spec fix_lang(binary(), adhoc_command()) -> adhoc_command(). fix_lang(Lang, #adhoc_command{lang = <<>>} = Cmd) -> Cmd#adhoc_command{lang = Lang}; fix_lang(_, Cmd) -> @@ -275,7 +274,7 @@ depends(_Host, _Opts) -> []. mod_opt_type(report_commands_node) -> - fun (B) when is_boolean(B) -> B end. + econf:bool(). mod_options(_Host) -> [{report_commands_node, false}]. |