summaryrefslogtreecommitdiff
path: root/src/mod_mam.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-04-30 19:01:47 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-04-30 19:01:47 +0300
commitfddd6110e00df12c99a20a2cc9d074f5f4f1f965 (patch)
tree366575b855f1b2013db7eeb02ecb213f81c98c1f /src/mod_mam.erl
parentMerge branch 'new-option-validation' (diff)
Don't validate an option in gen_mod:get*opt() functions
The changes are very similar to those from previous commit: * Now there is no need to pass validating function in gen_mod:get_opt() and gen_mod:get_module_opt() functions, because the modules' configuration keeps already validated values. * New functions gen_mod:get_opt/2 and gen_mod:get_module_opt/3 are introduced. * Functions gen_mod:get_opt/4 and get_module_opt/5 are deprecated. If the functions are still called, the "function" argument is simply ignored. * Validating callback Mod:listen_opt_type/1 is introduced to validate listening options at startup.
Diffstat (limited to 'src/mod_mam.erl')
-rw-r--r--src/mod_mam.erl46
1 files changed, 13 insertions, 33 deletions
diff --git a/src/mod_mam.erl b/src/mod_mam.erl
index 5a61df32..4b94163c 100644
--- a/src/mod_mam.erl
+++ b/src/mod_mam.erl
@@ -72,8 +72,7 @@
%%% API
%%%===================================================================
start(Host, Opts) ->
- IQDisc = gen_mod:get_opt(iqdisc, Opts, fun gen_iq_handler:check_type/1,
- one_queue),
+ IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
Mod = gen_mod:db_mod(Host, Opts, ?MODULE),
Mod:init(Host, Opts),
init_cache(Host, Opts),
@@ -100,8 +99,7 @@ start(Host, Opts) ->
get_room_config, 50),
ejabberd_hooks:add(set_room_option, Host, ?MODULE,
set_room_option, 50),
- case gen_mod:get_opt(assume_mam_usage, Opts,
- fun(B) when is_boolean(B) -> B end, false) of
+ case gen_mod:get_opt(assume_mam_usage, Opts, false) of
true ->
ejabberd_hooks:add(message_is_archived, Host, ?MODULE,
message_is_archived, 50);
@@ -117,7 +115,6 @@ use_cache(Host, Opts) ->
true -> Mod:use_cache(Host, Opts);
false ->
gen_mod:get_opt(use_cache, Opts,
- mod_opt_type(use_cache),
ejabberd_config:use_cache(Host))
end.
@@ -131,13 +128,10 @@ init_cache(Host, Opts) ->
cache_opts(Host, Opts) ->
MaxSize = gen_mod:get_opt(cache_size, Opts,
- mod_opt_type(cache_size),
ejabberd_config:cache_size(Host)),
CacheMissed = gen_mod:get_opt(cache_missed, Opts,
- mod_opt_type(cache_missed),
ejabberd_config:cache_missed(Host)),
LifeTime = case gen_mod:get_opt(cache_life_time, Opts,
- mod_opt_type(cache_life_time),
ejabberd_config:cache_life_time(Host)) of
infinity -> infinity;
I -> timer:seconds(I)
@@ -168,8 +162,7 @@ stop(Host) ->
get_room_config, 50),
ejabberd_hooks:delete(set_room_option, Host, ?MODULE,
set_room_option, 50),
- case gen_mod:get_module_opt(Host, ?MODULE, assume_mam_usage,
- fun(B) when is_boolean(B) -> B end, false) of
+ case gen_mod:get_module_opt(Host, ?MODULE, assume_mam_usage, false) of
true ->
ejabberd_hooks:delete(message_is_archived, Host, ?MODULE,
message_is_archived, 50);
@@ -188,16 +181,13 @@ reload(Host, NewOpts, OldOpts) ->
ok
end,
ets_cache:setopts(archive_prefs_cache, NewOpts),
- case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts,
- fun gen_iq_handler:check_type/1,
- one_queue) of
+ case gen_mod:is_equal_opt(iqdisc, NewOpts, OldOpts, one_queue) of
{false, IQDisc, _} ->
register_iq_handlers(Host, IQDisc);
true ->
ok
end,
- case gen_mod:is_equal_opt(assume_mam_usage, NewOpts, OldOpts,
- fun(B) when is_boolean(B) -> B end, false) of
+ case gen_mod:is_equal_opt(assume_mam_usage, NewOpts, OldOpts, false) of
{false, true, _} ->
ejabberd_hooks:add(message_is_archived, Host, ?MODULE,
message_is_archived, 50);
@@ -431,8 +421,7 @@ message_is_archived(true, _C2SState, _Pkt) ->
message_is_archived(false, #{jid := JID} = C2SState, Pkt) ->
#jid{luser = LUser, lserver = LServer} = JID,
Peer = xmpp:get_from(Pkt),
- case gen_mod:get_module_opt(LServer, ?MODULE, assume_mam_usage,
- fun(B) when is_boolean(B) -> B end, false) of
+ case gen_mod:get_module_opt(LServer, ?MODULE, assume_mam_usage, false) of
true ->
should_archive(strip_my_archived_tag(Pkt, LServer), LServer)
andalso should_archive_peer(C2SState, LUser, LServer,
@@ -788,18 +777,14 @@ get_prefs(LUser, LServer) ->
Prefs;
error ->
ActivateOpt = gen_mod:get_module_opt(
- LServer, ?MODULE, request_activates_archiving,
- fun(B) when is_boolean(B) -> B end, false),
+ LServer, ?MODULE,
+ request_activates_archiving, false),
case ActivateOpt of
true ->
#archive_prefs{us = {LUser, LServer}, default = never};
false ->
Default = gen_mod:get_module_opt(
- LServer, ?MODULE, default,
- fun(always) -> always;
- (never) -> never;
- (roster) -> roster
- end, never),
+ LServer, ?MODULE, default, never),
#archive_prefs{us = {LUser, LServer}, default = Default}
end
end.
@@ -811,10 +796,8 @@ prefs_el(Default, Always, Never, NS) ->
xmlns = NS}.
maybe_activate_mam(LUser, LServer) ->
- ActivateOpt = gen_mod:get_module_opt(LServer, ?MODULE,
- request_activates_archiving,
- fun(B) when is_boolean(B) -> B end,
- false),
+ ActivateOpt = gen_mod:get_module_opt(
+ LServer, ?MODULE, request_activates_archiving, false),
case ActivateOpt of
true ->
Mod = gen_mod:db_mod(LServer, ?MODULE),
@@ -826,11 +809,8 @@ maybe_activate_mam(LUser, LServer) ->
{ok, _Prefs} ->
ok;
error ->
- Default = gen_mod:get_module_opt(LServer, ?MODULE, default,
- fun(always) -> always;
- (never) -> never;
- (roster) -> roster
- end, never),
+ Default = gen_mod:get_module_opt(
+ LServer, ?MODULE, default, never),
write_prefs(LUser, LServer, LServer, Default, [], [])
end;
false ->