fix(api): publish API only returns message ID

This commit is contained in:
Zaiming (Stone) Shi 2022-10-14 09:49:46 +02:00
parent 6f077c47e7
commit c2f176c1e7
1 changed files with 8 additions and 17 deletions

View File

@ -109,15 +109,15 @@ fields(publish_message_info) ->
[
{id,
hoconsc:mk(binary(), #{
desc => <<"Internal Message ID">>
desc => <<"A globally unique message ID">>
})}
] ++ fields(message).
].
publish(post, #{body := Body}) ->
case message(Body) of
{ok, Message} ->
_ = emqx_mgmt:publish(Message),
{200, format_message(Message)};
{200, format_message_response(Message)};
{error, R} ->
{400, 'BAD_REQUEST', to_binary(R)}
end.
@ -126,7 +126,7 @@ publish_batch(post, #{body := Body}) ->
case messages(Body) of
{ok, Messages} ->
_ = [emqx_mgmt:publish(Message) || Message <- Messages],
{200, format_message(Messages)};
{200, format_message_response(Messages)};
{error, R} ->
{400, 'BAD_REQUEST', to_binary(R)}
end.
@ -167,19 +167,10 @@ messages([MessageMap | List], Res) ->
{error, R}
end.
format_message(Messages) when is_list(Messages) ->
[format_message(Message) || Message <- Messages];
format_message(#message{
id = ID, qos = Qos, from = From, topic = Topic, payload = Payload, flags = Flags
}) ->
#{
id => emqx_guid:to_hexstr(ID),
qos => Qos,
topic => Topic,
payload => Payload,
retain => maps:get(retain, Flags, false),
clientid => to_binary(From)
}.
format_message_response(Messages) when is_list(Messages) ->
[format_message_response(Message) || Message <- Messages];
format_message_response(#message{id = ID}) ->
#{id => emqx_guid:to_hexstr(ID)}.
to_binary(Data) when is_binary(Data) ->
Data;