aboutsummaryrefslogtreecommitdiff
path: root/src/mod_avatar.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2018-01-15 12:54:57 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2018-01-15 12:54:57 +0300
commit0f86559d83a37d97e1ce18aa346a67f7d0b391e2 (patch)
tree395977e9872e1a46e791eeeb6bf86f9405b4a25f /src/mod_avatar.erl
parentMerge pull request #2221 from licaon-kter/patch-1 (diff)
Always build eimp dependency
Even if no suitable C graphics libraries are detected at compile time, the package is still usable because it provides `eimp:get_type/1` which is used by mod_avatar.
Diffstat (limited to 'src/mod_avatar.erl')
-rw-r--r--src/mod_avatar.erl67
1 files changed, 22 insertions, 45 deletions
diff --git a/src/mod_avatar.erl b/src/mod_avatar.erl
index c11c68779..b72946df4 100644
--- a/src/mod_avatar.erl
+++ b/src/mod_avatar.erl
@@ -38,21 +38,12 @@
%%% API
%%%===================================================================
start(Host, _Opts) ->
- case misc:have_eimp() of
- true ->
- ejabberd_hooks:add(pubsub_publish_item, Host, ?MODULE,
- pubsub_publish_item, 50),
- ejabberd_hooks:add(vcard_iq_set, Host, ?MODULE,
- vcard_iq_convert, 30),
- ejabberd_hooks:add(vcard_iq_set, Host, ?MODULE,
- vcard_iq_publish, 100);
- false ->
- ?CRITICAL_MSG("ejabberd is built without "
- "graphics support: reconfigure it with "
- "--enable-graphics or disable '~s'",
- [?MODULE]),
- {error, graphics_not_compiled}
- end.
+ ejabberd_hooks:add(pubsub_publish_item, Host, ?MODULE,
+ pubsub_publish_item, 50),
+ ejabberd_hooks:add(vcard_iq_set, Host, ?MODULE,
+ vcard_iq_convert, 30),
+ ejabberd_hooks:add(vcard_iq_set, Host, ?MODULE,
+ vcard_iq_publish, 100).
stop(Host) ->
ejabberd_hooks:delete(pubsub_publish_item, Host, ?MODULE,
@@ -416,35 +407,21 @@ decode_mime_type(MimeType) ->
encode_mime_type(Type) ->
<<"image/", (atom_to_binary(Type, latin1))/binary>>.
-mod_opt_type({convert, png}) ->
- fun(jpeg) -> jpeg;
- (webp) -> webp;
- (gif) -> gif
- end;
-mod_opt_type({convert, webp}) ->
- fun(jpeg) -> jpeg;
- (png) -> png;
- (gif) -> gif
- end;
-mod_opt_type({convert, jpeg}) ->
- fun(png) -> png;
- (webp) -> webp;
- (gif) -> gif
- end;
-mod_opt_type({convert, gif}) ->
- fun(png) -> png;
- (jpeg) -> jpeg;
- (webp) -> webp
- end;
-mod_opt_type({convert, default}) ->
- fun(png) -> png;
- (webp) -> webp;
- (jpeg) -> jpeg;
- (gif) -> gif
+warn(Format) ->
+ ?WARNING_MSG("ejabberd is not compiled with ~p support", [Format]).
+
+mod_opt_type({convert, From}) when From == webp; From == jpeg;
+ From == png; From == gif ->
+ fun(To) when is_atom(To), To /= From ->
+ case eimp:is_supported(From) of
+ false ->
+ warn(From);
+ true ->
+ case eimp:is_supported(To) of
+ false -> warn(To);
+ true -> To
+ end
+ end
end;
mod_opt_type(_) ->
- [{convert, default},
- {convert, webp},
- {convert, png},
- {convert, gif},
- {convert, jpeg}].
+ [{convert, T} || T <- [default|eimp:supported_formats()]].