From 623a9ec3ba35ff0d04465889d033b16743d9d68b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Chmielowski?= Date: Wed, 3 Apr 2019 12:04:36 +0200 Subject: [PATCH] Return proper error message for duplicate or missing args in http_api call --- src/mod_http_api.erl | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/mod_http_api.erl b/src/mod_http_api.erl index 39a98a967..e3a738a07 100644 --- a/src/mod_http_api.erl +++ b/src/mod_http_api.erl @@ -330,19 +330,23 @@ handle2(Call, Auth, Args, Version) when is_atom(Call), is_list(Args) -> format_command_result(Call, Auth, Res, Version) end. -get_elem_delete(A, L, F) -> +get_elem_delete(Call, A, L, F) -> case proplists:get_all_values(A, L) of [Value] -> {Value, proplists:delete(A, L)}; [_, _ | _] -> - %% Crash reporting the error - exit({duplicated_attribute, A, L}); + ?INFO_MSG("Command ~s call rejected, it has duplicate attribute ~w", + [Call, A]), + throw({invalid_parameter, + io_lib:format("Request have duplicate argument: ~w", [A])}); [] -> case F of {list, _} -> {[], L}; _ -> - %% Report the error and then force a crash - exit({attribute_not_found, A, L}) + ?INFO_MSG("Command ~s call rejected, missing attribute ~w", + [Call, A]), + throw({invalid_parameter, + io_lib:format("Request have missing argument: ~w", [A])}) end end. @@ -351,7 +355,7 @@ format_args(Call, Args, ArgsFormat) -> ArgFormat}, {Args1, Res}) -> {ArgValue, Args2} = - get_elem_delete(ArgName, + get_elem_delete(Call, ArgName, Args1, ArgFormat), Formatted = format_arg(ArgValue, ArgFormat),