fix(api): fix unmatched position parsing

This commit is contained in:
JimMoen 2022-03-15 17:50:59 +08:00
parent 1748691db1
commit 188d876b1c
2 changed files with 11 additions and 7 deletions

View File

@ -506,16 +506,16 @@ parse_position(<<"front">>) ->
{ok, ?CMD_MOVE_FRONT}; {ok, ?CMD_MOVE_FRONT};
parse_position(<<"rear">>) -> parse_position(<<"rear">>) ->
{ok, ?CMD_MOVE_REAR}; {ok, ?CMD_MOVE_REAR};
parse_position(<<"before:">>) ->
{error, <<"Invalid parameter. Cannot be placed before an empty target">>};
parse_position(<<"after:">>) ->
{error, <<"Invalid parameter. Cannot be placed after an empty target">>};
parse_position(<<"before:", Before/binary>>) -> parse_position(<<"before:", Before/binary>>) ->
{ok, ?CMD_MOVE_BEFORE(Before)}; {ok, ?CMD_MOVE_BEFORE(Before)};
parse_position(<<"after:", After/binary>>) -> parse_position(<<"after:", After/binary>>) ->
{ok, ?CMD_MOVE_AFTER(After)}; {ok, ?CMD_MOVE_AFTER(After)};
parse_position(<<"before:">>) ->
{error, {invalid_parameter, position}};
parse_position(<<"after:">>) ->
{error, {invalid_parameter, position}};
parse_position(_) -> parse_position(_) ->
{error, {invalid_parameter, position}}. {error, <<"Invalid parameter. Unknow position">>}.
position_example() -> position_example() ->
#{ front => #{ front =>

View File

@ -353,9 +353,13 @@ return(_, {error, Reason}) ->
parse_position(#{<<"position">> := <<"front">>}, _) -> front; parse_position(#{<<"position">> := <<"front">>}, _) -> front;
parse_position(#{<<"position">> := <<"rear">>}, _) -> rear; parse_position(#{<<"position">> := <<"rear">>}, _) -> rear;
parse_position(#{<<"position">> := <<"before:", Name/binary>>}, Name) -> parse_position(#{<<"position">> := <<"before:", Name/binary>>}, Name) ->
{error, <<"Can't before:self">>}; {error, <<"Invalid parameter. Cannot be placed before itself">>};
parse_position(#{<<"position">> := <<"after:", Name/binary>>}, Name) -> parse_position(#{<<"position">> := <<"after:", Name/binary>>}, Name) ->
{error, <<"Can't after:self">>}; {error, <<"Invalid parameter. Cannot be placed after itself">>};
parse_position(#{<<"position">> := <<"before:">>}, _Name) ->
{error, <<"Invalid parameter. Cannot be placed before an empty target">>};
parse_position(#{<<"position">> := <<"after:">>}, _Name) ->
{error, <<"Invalid parameter. Cannot be placed after an empty target">>};
parse_position(#{<<"position">> := <<"before:", Before/binary>>}, _Name) -> parse_position(#{<<"position">> := <<"before:", Before/binary>>}, _Name) ->
{before, binary_to_list(Before)}; {before, binary_to_list(Before)};
parse_position(#{<<"position">> := <<"after:", After/binary>>}, _Name) -> parse_position(#{<<"position">> := <<"after:", After/binary>>}, _Name) ->