aboutsummaryrefslogtreecommitdiff
path: root/src/mod_adhoc.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mod_adhoc.erl')
-rw-r--r--src/mod_adhoc.erl49
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}].