./ct_report/coverage/mod_http_upload_api.COVER.html

1 -module(mod_http_upload_api).
2
3 -export([get_urls/5, get_urls_mongooseimctl/5]).
4
5 -ignore_xref([get_urls_mongooseimctl/5]).
6
7 -spec get_urls_mongooseimctl(Domain :: jid:lserver(), Filename :: binary(), Size :: pos_integer(),
8 ContentType :: binary() | undefined, Timeout :: pos_integer()) ->
9 {ok | error, string()}.
10 get_urls_mongooseimctl(Domain, Filename, Size, ContentType, Timeout) ->
11 9 case get_urls(Domain, Filename, Size, ContentType, Timeout) of
12 {ok, #{<<"PutUrl">> := PutURL, <<"GetUrl">> := GetURL, <<"Header">> := Header}} ->
13 4 {ok, generate_output_message(PutURL, GetURL, Header)};
14 {_, Message} ->
15 5 {error, Message}
16 end.
17
18 -spec get_urls(Domain :: jid:lserver(), Filename :: binary(), Size :: pos_integer(),
19 ContentType :: binary() | undefined, Timeout :: pos_integer()) ->
20 {ok | size_error | timeout_error | module_not_loaded_error | domain_not_found |
21 file_too_large_error, string()} | {ok, #{binary() => binary() | string()}}.
22 get_urls(_Domain, _Filename, Size, _ContentType, _Timeout) when Size =< 0 ->
23 4 {size_error, "size must be positive integer"};
24 get_urls(_Domain, _Filename, _Size, _ContentType, Timeout) when Timeout =< 0 ->
25 4 {timeout_error, "timeout must be positive integer"};
26 get_urls(Domain, Filename, Size, <<>>, Timeout) ->
27 2 get_urls(Domain, Filename, Size, undefined, Timeout);
28 get_urls(Domain, Filename, Size, ContentType, Timeout) ->
29 12 case mongoose_domain_api:get_domain_host_type(Domain) of
30 {ok, HostType} ->
31 11 check_module_and_get_urls(HostType, Filename, Size, ContentType, Timeout);
32 _ ->
33 1 {domain_not_found, "domain does not exist"}
34 end.
35
36 check_module_and_get_urls(HostType, Filename, Size, ContentType, Timeout) ->
37 11 case gen_mod:is_loaded(HostType, mod_http_upload) of
38 true ->
39 8 case mod_http_upload:get_urls(HostType, Filename, Size, ContentType, Timeout) of
40 {PutURL, GetURL, Header} ->
41 6 {ok, #{<<"PutUrl">> => PutURL, <<"GetUrl">> => GetURL,
42 <<"Header">> => header_output(Header)}};
43 file_too_large_error ->
44 2 {file_too_large_error,
45 "Declared file size exceeds the host's maximum file size."}
46 end;
47 false ->
48 3 {module_not_loaded_error, "mod_http_upload is not loaded for this host"}
49 end.
50
51 -spec generate_output_message(PutURL :: binary(), GetURL :: binary(),
52 Header :: string()) -> string().
53 generate_output_message(PutURL, GetURL, Header) ->
54 4 PutURLOutput = url_output("PutURL:", PutURL),
55 4 GetURLOutput = url_output("GetURL:", GetURL),
56 4 lists:flatten([PutURLOutput, GetURLOutput, Header]).
57
58 url_output(Name, Url) ->
59 8 io_lib:format("~s ~s~n", [Name, Url]).
60
61 6 header_output(Header) when Header =:= #{} -> [];
62 header_output(Header) ->
63
:-(
io_lib:format("Header: ~p~n", [maps:to_list(Header)]).
Line Hits Source