1 |
|
-module(mod_offline_api). |
2 |
|
|
3 |
|
-export([delete_expired_messages/1, delete_old_messages/2]). |
4 |
|
|
5 |
|
-spec delete_expired_messages(jid:lserver()) -> |
6 |
|
{ok | domain_not_found | server_error | module_not_loaded_error, iolist()}. |
7 |
|
delete_expired_messages(Domain) -> |
8 |
5 |
call_for_loaded_module(Domain, fun remove_expired_messages/2, {Domain}). |
9 |
|
|
10 |
|
-spec delete_old_messages(jid:lserver(), Days :: integer()) -> |
11 |
|
{ok | domain_not_found | server_error | module_not_loaded_error, iolist()}. |
12 |
|
delete_old_messages(Domain, Days) -> |
13 |
5 |
call_for_loaded_module(Domain, fun remove_old_messages/2, {Domain, Days}). |
14 |
|
|
15 |
|
call_for_loaded_module(Domain, Function, Args) -> |
16 |
10 |
case mongoose_domain_api:get_domain_host_type(Domain) of |
17 |
|
{ok, HostType} -> |
18 |
8 |
case gen_mod:is_loaded(HostType, mod_offline) of |
19 |
|
true -> |
20 |
6 |
Function(Args, HostType); |
21 |
|
false -> |
22 |
2 |
{module_not_loaded_error, "mod_offline is not loaded for this host"} |
23 |
|
end; |
24 |
|
{error, not_found} -> |
25 |
2 |
{domain_not_found, "Unknown domain"} |
26 |
|
end. |
27 |
|
|
28 |
|
remove_old_messages({Domain, Days}, HostType) -> |
29 |
3 |
case mod_offline:remove_old_messages(HostType, Domain, Days) of |
30 |
|
{ok, C} -> |
31 |
3 |
{ok, io_lib:format("Removed ~p messages", [C])}; |
32 |
|
{error, Reason} -> |
33 |
:-( |
{server_error, io_lib:format("Can't remove old messages: ~n~p", [Reason])} |
34 |
|
end. |
35 |
|
|
36 |
|
remove_expired_messages({Domain}, HostType) -> |
37 |
3 |
case mod_offline:remove_expired_messages(HostType, Domain) of |
38 |
|
{ok, C} -> |
39 |
3 |
{ok, io_lib:format("Removed ~p messages", [C])}; |
40 |
|
{error, Reason} -> |
41 |
:-( |
{server_error, io_lib:format("Can't remove old messages: ~n~p", [Reason])} |
42 |
|
end. |