fix jsonrpc
This commit is contained in:
parent
ef7e2caf4f
commit
09ae0bc8c0
@ -64,13 +64,11 @@
|
||||
}).
|
||||
|
||||
-record(jsonrpc_request, {
|
||||
id = 0 :: integer(),
|
||||
method :: binary(),
|
||||
params = <<>> :: any()
|
||||
}).
|
||||
|
||||
-record(jsonrpc_reply, {
|
||||
id :: integer(),
|
||||
result :: any() | undefined,
|
||||
error :: any() | undefined
|
||||
}).
|
||||
|
||||
@ -33,11 +33,11 @@ encode0(#auth_reply{code = Code, payload = Payload}) ->
|
||||
marshal(?I32, Code),
|
||||
marshal(?Bytes, Payload)
|
||||
]);
|
||||
encode0(#jsonrpc_reply{id = Id, result = Result, error = undefined}) ->
|
||||
ResultBin = jiffy:encode(#{<<"id">> => Id, <<"result">> => Result}, [force_utf8]),
|
||||
encode0(#jsonrpc_reply{result = Result, error = undefined}) ->
|
||||
ResultBin = jiffy:encode(#{<<"result">> => Result}, [force_utf8]),
|
||||
iolist_to_binary([marshal(?Bytes, ResultBin)]);
|
||||
encode0(#jsonrpc_reply{id = Id, result = undefined, error = Error}) ->
|
||||
ResultBin = jiffy:encode(#{<<"id">> => Id, <<"error">> => Error}, [force_utf8]),
|
||||
encode0(#jsonrpc_reply{result = undefined, error = Error}) ->
|
||||
ResultBin = jiffy:encode(#{<<"error">> => Error}, [force_utf8]),
|
||||
iolist_to_binary([marshal(?Bytes, ResultBin)]);
|
||||
encode0(#pub{topic = Topic, content = Content}) ->
|
||||
iolist_to_binary([
|
||||
@ -50,8 +50,8 @@ encode0(#command{command_type = CommandType, command = Command}) ->
|
||||
marshal(?Bytes, Command)
|
||||
]);
|
||||
|
||||
encode0(#jsonrpc_request{id = Id, method = Method, params = Params}) ->
|
||||
ReqBody = jiffy:encode(#{<<"id">> => Id, <<"method">> => Method, <<"params">> => Params}, [force_utf8]),
|
||||
encode0(#jsonrpc_request{method = Method, params = Params}) ->
|
||||
ReqBody = jiffy:encode(#{<<"method">> => Method, <<"params">> => Params}, [force_utf8]),
|
||||
marshal(?Bytes, ReqBody);
|
||||
encode0(#data{service_id = ServiceId, device_uuid = DeviceUUID, route_key = RouteKey, metric = Metric}) ->
|
||||
iolist_to_binary([
|
||||
@ -85,10 +85,10 @@ decode0(?MESSAGE_AUTH_REQUEST, [UUID, Username, Salt, Token, Timestamp]) ->
|
||||
{ok, #auth_request{uuid = UUID, username = Username, salt = Salt, token = Token, timestamp = Timestamp}};
|
||||
decode0(?MESSAGE_JSONRPC_REPLY, [ReplyBin]) ->
|
||||
case jiffy:decode(ReplyBin, [return_maps]) of
|
||||
#{<<"id">> := Id, <<"result">> := Result} ->
|
||||
{ok, #jsonrpc_reply{id = Id, result = Result}};
|
||||
#{<<"result">> := Result} ->
|
||||
{ok, #jsonrpc_reply{result = Result}};
|
||||
#{<<"id">> := Id, <<"error">> := Error} ->
|
||||
{ok, #jsonrpc_reply{id = Id, error = Error}};
|
||||
{ok, #jsonrpc_reply{error = Error}};
|
||||
_ ->
|
||||
error
|
||||
end;
|
||||
@ -99,8 +99,8 @@ decode0(?MESSAGE_COMMAND, [CommandType, Command]) ->
|
||||
decode0(?MESSAGE_AUTH_REPLY, [Code, Payload]) ->
|
||||
{ok, #auth_reply{code = Code, payload = Payload}};
|
||||
decode0(?MESSAGE_JSONRPC_REQUEST, [ReqBody]) ->
|
||||
#{<<"id">> := Id, <<"method">> := Method, <<"params">> := Params} = jiffy:decode(ReqBody, [return_maps]),
|
||||
{ok, #jsonrpc_request{id = Id, method = Method, params = Params}};
|
||||
#{<<"method">> := Method, <<"params">> := Params} = jiffy:decode(ReqBody, [return_maps]),
|
||||
{ok, #jsonrpc_request{method = Method, params = Params}};
|
||||
decode0(?MESSAGE_DATA, [ServiceId, DeviceUUID, RouteKey, Metric]) ->
|
||||
{ok, #data{service_id = ServiceId, device_uuid = DeviceUUID, route_key = RouteKey, metric = Metric}};
|
||||
decode0(?MESSAGE_EVENT, [ServiceId, EventType, Params]) ->
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user