fix: publish api rename param from - clientid
This commit is contained in:
parent
3df86508bc
commit
4f95f097f7
|
@ -61,7 +61,7 @@ schema("/publish/bulk") ->
|
||||||
}
|
}
|
||||||
}.
|
}.
|
||||||
|
|
||||||
fields(publish_message) ->
|
fields(message) ->
|
||||||
[
|
[
|
||||||
{topic,
|
{topic,
|
||||||
hoconsc:mk(binary(), #{
|
hoconsc:mk(binary(), #{
|
||||||
|
@ -75,7 +75,7 @@ fields(publish_message) ->
|
||||||
required => false,
|
required => false,
|
||||||
default => 0
|
default => 0
|
||||||
})},
|
})},
|
||||||
{from,
|
{clientid,
|
||||||
hoconsc:mk(binary(), #{
|
hoconsc:mk(binary(), #{
|
||||||
desc => <<"From client ID">>,
|
desc => <<"From client ID">>,
|
||||||
required => false,
|
required => false,
|
||||||
|
@ -94,34 +94,74 @@ fields(publish_message) ->
|
||||||
default => false
|
default => false
|
||||||
})}
|
})}
|
||||||
];
|
];
|
||||||
|
fields(publish_message) ->
|
||||||
|
[
|
||||||
|
{payload_encoding,
|
||||||
|
hoconsc:mk(hoconsc:enum([plain, base64]), #{
|
||||||
|
desc => <<"MQTT Payload Encoding, base64 or plain">>,
|
||||||
|
required => false,
|
||||||
|
default => plain
|
||||||
|
})}
|
||||||
|
] ++ fields(message);
|
||||||
fields(publish_message_info) ->
|
fields(publish_message_info) ->
|
||||||
[
|
[
|
||||||
{id,
|
{id,
|
||||||
hoconsc:mk(binary(), #{
|
hoconsc:mk(binary(), #{
|
||||||
desc => <<"Internal Message ID">>
|
desc => <<"Internal Message ID">>
|
||||||
})}
|
})}
|
||||||
] ++ fields(publish_message).
|
] ++ fields(message).
|
||||||
|
|
||||||
publish(post, #{body := Body}) ->
|
publish(post, #{body := Body}) ->
|
||||||
Message = message(Body),
|
case message(Body) of
|
||||||
_ = emqx_mgmt:publish(Message),
|
{ok, Message} ->
|
||||||
{200, format_message(Message)}.
|
_ = emqx_mgmt:publish(Message),
|
||||||
|
{200, format_message(Message)};
|
||||||
|
{error, R} ->
|
||||||
|
{400, 'BAD_REQUEST', to_binary(R)}
|
||||||
|
end.
|
||||||
|
|
||||||
publish_batch(post, #{body := Body}) ->
|
publish_batch(post, #{body := Body}) ->
|
||||||
Messages = messages(Body),
|
case messages(Body) of
|
||||||
_ = [emqx_mgmt:publish(Message) || Message <- Messages],
|
{ok, Messages} ->
|
||||||
{200, format_message(Messages)}.
|
_ = [emqx_mgmt:publish(Message) || Message <- Messages],
|
||||||
|
{200, format_message(Messages)};
|
||||||
|
{error, R} ->
|
||||||
|
{400, 'BAD_REQUEST', to_binary(R)}
|
||||||
|
end.
|
||||||
|
|
||||||
message(Map) ->
|
message(Map) ->
|
||||||
From = maps:get(<<"from">>, Map, http_api),
|
Encoding = maps:get(<<"payload_encoding">>, Map, plain),
|
||||||
QoS = maps:get(<<"qos">>, Map, 0),
|
case encode_payload(Encoding, maps:get(<<"payload">>, Map)) of
|
||||||
Topic = maps:get(<<"topic">>, Map),
|
{ok, Payload} ->
|
||||||
Payload = maps:get(<<"payload">>, Map),
|
From = maps:get(<<"clientid">>, Map, http_api),
|
||||||
Retain = maps:get(<<"retain">>, Map, false),
|
QoS = maps:get(<<"qos">>, Map, 0),
|
||||||
emqx_message:make(From, QoS, Topic, Payload, #{retain => Retain}, #{}).
|
Topic = maps:get(<<"topic">>, Map),
|
||||||
|
Retain = maps:get(<<"retain">>, Map, false),
|
||||||
|
{ok, emqx_message:make(From, QoS, Topic, Payload, #{retain => Retain}, #{})};
|
||||||
|
{error, R} ->
|
||||||
|
{error, R}
|
||||||
|
end.
|
||||||
|
|
||||||
|
encode_payload(plain, Payload) -> {ok, Payload};
|
||||||
|
encode_payload(base64, Payload) ->
|
||||||
|
try
|
||||||
|
{ok, base64:decode(Payload)}
|
||||||
|
catch _:_ ->
|
||||||
|
{error, {decode_base64_payload_failed, Payload}}
|
||||||
|
end.
|
||||||
|
|
||||||
messages(List) ->
|
messages(List) ->
|
||||||
[message(MessageMap) || MessageMap <- List].
|
messages(List, []).
|
||||||
|
|
||||||
|
messages([], Res) ->
|
||||||
|
{ok, lists:reverse(Res)};
|
||||||
|
messages([MessageMap | List], Res) ->
|
||||||
|
case message(MessageMap) of
|
||||||
|
{ok, Message} ->
|
||||||
|
messages(List, [Message | Res]);
|
||||||
|
{error, R} ->
|
||||||
|
{error, R}
|
||||||
|
end.
|
||||||
|
|
||||||
format_message(Messages) when is_list(Messages) ->
|
format_message(Messages) when is_list(Messages) ->
|
||||||
[format_message(Message) || Message <- Messages];
|
[format_message(Message) || Message <- Messages];
|
||||||
|
@ -134,7 +174,7 @@ format_message(#message{
|
||||||
topic => Topic,
|
topic => Topic,
|
||||||
payload => Payload,
|
payload => Payload,
|
||||||
retain => maps:get(retain, Flags, false),
|
retain => maps:get(retain, Flags, false),
|
||||||
from => to_binary(From)
|
clientid => to_binary(From)
|
||||||
}.
|
}.
|
||||||
|
|
||||||
to_binary(Data) when is_binary(Data) ->
|
to_binary(Data) when is_binary(Data) ->
|
||||||
|
|
Loading…
Reference in New Issue