fix(emqx_retainer): use base64 to encode payload in api's result
This commit is contained in:
parent
5497e01f4c
commit
b6755d5953
|
@ -34,6 +34,8 @@
|
|||
, page_params/0
|
||||
, properties/1]).
|
||||
|
||||
-define(MAX_BASE64_PAYLOAD_SIZE, 1048576). %% 1MB = 1024 x 1024
|
||||
|
||||
api_spec() ->
|
||||
{[lookup_retained_api(), with_topic_api(), config_api()], []}.
|
||||
|
||||
|
@ -179,7 +181,13 @@ format_message(#message{ id = ID, qos = Qos, topic = Topic, from = From
|
|||
|
||||
format_detail_message(#message{payload = Payload} = Msg) ->
|
||||
Base = format_message(Msg),
|
||||
Base#{payload => Payload}.
|
||||
EncodePayload = base64:encode(Payload),
|
||||
case erlang:byte_size(EncodePayload) =< ?MAX_BASE64_PAYLOAD_SIZE of
|
||||
true ->
|
||||
Base#{payload => EncodePayload};
|
||||
_ ->
|
||||
Base#{payload => base64:encode(<<"PAYLOAD_TOO_LARGE">>)}
|
||||
end.
|
||||
|
||||
to_bin_string(Data) when is_binary(Data) ->
|
||||
Data;
|
||||
|
|
Loading…
Reference in New Issue