From 7b0fa7e6e2b839324e41b23696fcc082db869816 Mon Sep 17 00:00:00 2001 From: Evgeniy Khramtsov Date: Tue, 16 Jan 2018 01:06:20 +0300 Subject: [PATCH] Improve validation of 'convert' option --- src/mod_avatar.erl | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/mod_avatar.erl b/src/mod_avatar.erl index b72946df4..778794e1a 100644 --- a/src/mod_avatar.erl +++ b/src/mod_avatar.erl @@ -407,18 +407,30 @@ decode_mime_type(MimeType) -> encode_mime_type(Type) -> <<"image/", (atom_to_binary(Type, latin1))/binary>>. -warn(Format) -> - ?WARNING_MSG("ejabberd is not compiled with ~p support", [Format]). +-spec fail(atom()) -> no_return(). +fail(Format) -> + FormatS = case Format of + webp -> "WebP"; + png -> "PNG"; + jpeg -> "JPEG"; + gif -> "GIF"; + _ -> "" + end, + if FormatS /= "" -> + ?WARNING_MSG("ejabberd is not compiled with ~s support", [FormatS]); + true -> + ok + end, + erlang:error(badarg). -mod_opt_type({convert, From}) when From == webp; From == jpeg; - From == png; From == gif -> +mod_opt_type({convert, From}) -> fun(To) when is_atom(To), To /= From -> - case eimp:is_supported(From) of + case eimp:is_supported(From) orelse From == default of false -> - warn(From); + fail(From); true -> case eimp:is_supported(To) of - false -> warn(To); + false -> fail(To); true -> To end end