./ct_report/coverage/service_admin_extra_upload.COVER.html

1 -module(service_admin_extra_upload).
2
3 -include("ejabberd_commands.hrl").
4
5 -export([commands/0, get_urls/5]).
6
7 -ignore_xref([commands/0, get_urls/5]).
8
9 -spec commands() -> [ejabberd_commands:cmd()].
10 146 commands() -> [
11 #ejabberd_commands{
12 name = http_upload,
13 tags = [http, upload],
14 desc = "Generate upload/download URLs for the file",
15 longdesc = "Returns upload/download URLs generated by mod_http_upload. Example:\n"
16 " mongooseimctl http_upload localhost tmp.txt 5 '' 60",
17 module = ?MODULE,
18 function = get_urls,
19 args = [{domain, binary}, {file_name, binary}, {size, integer},
20 {content_type, binary}, {timeout, integer}],
21 result = {res, restuple}
22 }
23 ].
24
25 -spec get_urls(Domain :: jid:lserver(), Filename :: binary(), Size :: pos_integer(),
26 ContentType :: binary() | undefined, Timeout :: pos_integer()) ->
27 {ok, string()} | {error, string()}.
28 get_urls(_Domain, _Filename, Size, _ContentType, _Timeout) when Size =< 0->
29 2 {error, "size must be positive integer"};
30 get_urls(_Domain, _Filename, _Size, _ContentType, Timeout) when Timeout =< 0->
31 2 {error, "timeout must be positive integer"};
32 get_urls(Domain, Filename, Size, <<"">>, Timeout) ->
33 2 get_urls(Domain, Filename, Size, undefined, Timeout);
34 get_urls(Domain, Filename, Size, ContentType, Timeout) ->
35 5 {ok, HostType} = mongoose_domain_api:get_domain_host_type(Domain),
36 5 case gen_mod:is_loaded(HostType, mod_http_upload) of
37 true ->
38 4 {PutURL, GetURL, Header} =
39 mod_http_upload:get_urls(HostType, Filename, Size, ContentType, Timeout),
40 4 {ok, generate_output_message(PutURL, GetURL, Header)};
41 false ->
42 1 {error, "mod_http_upload is not loaded for this host"}
43 end.
44
45 -spec generate_output_message(PutURL :: binary(), GetURL :: binary(),
46 Headers :: #{binary() => binary()}) -> string().
47 generate_output_message(PutURL, GetURL, Header) ->
48 4 PutURLOutput = url_output("PutURL:", PutURL),
49 4 GetURLOutput = url_output("GetURL:", GetURL),
50 4 HeaderOutput = header_output(Header),
51 4 lists:flatten([PutURLOutput, GetURLOutput, HeaderOutput]).
52
53 url_output(Name, Url) ->
54 8 io_lib:format("~s ~s~n", [Name, Url]).
55
56 4 header_output(Header) when Header =:= #{} -> [];
57 header_output(Header) ->
58
:-(
io_lib:format("Header: ~p~n", [maps:to_list(Header)]).
Line Hits Source