From 6c2bcd5f8b96f5d8d746fdb7207511a1512cef74 Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Fri, 24 Apr 2026 15:07:13 +0800 Subject: [PATCH] replace jiffy --- HTTP_API_README.md | 24 ++++++++++----------- rebar.config | 1 - rebar.lock | 4 ---- src/adapters/control_api/iot_api_client.erl | 8 +++---- src/adapters/influxdb/influx_point.erl | 3 +-- src/devtools/endpoint_kafka_test.erl | 6 +++--- src/endpoint/endpoint_log.erl | 5 +++-- src/endpoint/endpoint_outbox.erl | 4 ++-- src/iot.app.src | 1 - src/iot_util.erl | 12 +++++------ src/transport/http/container_handler.erl | 2 +- src/transport/http/endpoint_handler.erl | 2 +- src/transport/http/event_stream_handler.erl | 2 +- src/transport/http/http_protocol.erl | 2 +- 14 files changed, 35 insertions(+), 41 deletions(-) diff --git a/HTTP_API_README.md b/HTTP_API_README.md index 0b71f10..11488b2 100644 --- a/HTTP_API_README.md +++ b/HTTP_API_README.md @@ -27,9 +27,9 @@ %% {"result": Data} %%-------------------------------------------------------------------- json_data(Data) -> - jiffy:encode(#{ + iolist_to_binary(json:encode(#{ <<"result">> => Data - }, [force_utf8]). + })). %%-------------------------------------------------------------------- %% @doc @@ -42,12 +42,12 @@ json_data(Data) -> %% } %%-------------------------------------------------------------------- json_error(ErrCode, ErrMessage) when is_integer(ErrCode), is_binary(ErrMessage) -> - jiffy:encode(#{ + iolist_to_binary(json:encode(#{ <<"error">> => #{ <<"code">> => ErrCode, <<"message">> => ErrMessage } - }, [force_utf8]). + })). ``` ### 📘 返回格式说明 @@ -475,9 +475,9 @@ json_error(ErrCode, ErrMessage) when is_integer(ErrCode), is_binary(ErrMessage) %% {"result": Data} %%-------------------------------------------------------------------- json_data(Data) -> - jiffy:encode(#{ + iolist_to_binary(json:encode(#{ <<"result">> => Data - }, [force_utf8]). + })). %%-------------------------------------------------------------------- %% @doc @@ -490,12 +490,12 @@ json_data(Data) -> %% } %%-------------------------------------------------------------------- json_error(ErrCode, ErrMessage) when is_integer(ErrCode), is_binary(ErrMessage) -> - jiffy:encode(#{ + iolist_to_binary(json:encode(#{ <<"error">> => #{ <<"code">> => ErrCode, <<"message">> => ErrMessage } - }, [force_utf8]). + })). ``` ### 📘 返回格式说明 @@ -909,9 +909,9 @@ Content-Type: application/json %% {"result": Data} %%-------------------------------------------------------------------- json_data(Data) -> - jiffy:encode(#{ + iolist_to_binary(json:encode(#{ <<"result">> => Data - }, [force_utf8]). + })). %%-------------------------------------------------------------------- %% @doc @@ -924,12 +924,12 @@ json_data(Data) -> %% } %%-------------------------------------------------------------------- json_error(ErrCode, ErrMessage) when is_integer(ErrCode), is_binary(ErrMessage) -> - jiffy:encode(#{ + iolist_to_binary(json:encode(#{ <<"error">> => #{ <<"code">> => ErrCode, <<"message">> => ErrMessage } - }, [force_utf8]). + })). ``` ### 📘 返回格式说明 diff --git a/rebar.config b/rebar.config index 4a58685..51ca489 100644 --- a/rebar.config +++ b/rebar.config @@ -36,7 +36,6 @@ {cowboy, ".*", {git, "https://github.com/ninenines/cowboy.git", {tag, "2.14.0"}}}, {ranch, ".*", {git, "https://github.com/ninenines/ranch.git", {tag, "2.2.0"}}}, {brod, ".*", {git, "https://github.com/kafka4beam/brod.git", {tag, "4.4.5"}}}, - {jiffy, ".*", {git, "https://github.com/davisp/jiffy.git", {tag, "1.1.1"}}}, {eredis, ".*", {git, "https://github.com/wooga/eredis.git", {tag, "v1.2.0"}}}, {emqtt, ".*", {git, "https://gitea.s5s8.com/anlicheng/emqtt.git", {tag, "v1.2"}}}, {gproc, ".*", {git, "https://github.com/uwiger/gproc.git", {tag, "0.9.1"}}} diff --git a/rebar.lock b/rebar.lock index 15bb440..9ec1297 100644 --- a/rebar.lock +++ b/rebar.lock @@ -31,10 +31,6 @@ {ref,"8c00789e411d7c09a9808d720232098da1f19d69"}}, 0}, {<<"idna">>,{pkg,<<"idna">>,<<"6.1.1">>},1}, - {<<"jiffy">>, - {git,"https://github.com/davisp/jiffy.git", - {ref,"9ea1b35b6e60ba21dfd4adbd18e7916a831fd7d4"}}, - 0}, {<<"kafka_protocol">>,{pkg,<<"kafka_protocol">>,<<"4.2.7">>},1}, {<<"metrics">>,{pkg,<<"metrics">>,<<"1.0.1">>},1}, {<<"mimerl">>,{pkg,<<"mimerl">>,<<"1.4.0">>},1}, diff --git a/src/adapters/control_api/iot_api_client.erl b/src/adapters/control_api/iot_api_client.erl index acc758a..7e8172a 100644 --- a/src/adapters/control_api/iot_api_client.erl +++ b/src/adapters/control_api/iot_api_client.erl @@ -129,7 +129,7 @@ ai_event(Id) when is_integer(Id) -> <<"token">> => Token, <<"id">> => Id }, - Body = iolist_to_binary(jiffy:encode(ReqData, [force_utf8])), + Body = iolist_to_binary(json:encode(ReqData)), case hackney:request(post, Url, Headers, Body, [{pool, false}]) of {ok, 200, _, ClientRef} -> {ok, RespBody} = hackney:body(ClientRef), @@ -155,13 +155,13 @@ do_post(Path, Params) when is_list(Path), is_map(Params) -> {<<"Accept">>, <<"application/json">>} ], Url = BaseUrl ++ Path, - Body = iolist_to_binary(jiffy:encode(Params, [force_utf8])), + Body = iolist_to_binary(json:encode(Params)), case hackney:request(post, Url, Headers, Body, [{pool, false}]) of {ok, 200, _, ClientRef} -> {ok, RespBody} = hackney:body(ClientRef), logger:debug("[iot_api_client] request url: ~p, send body: ~p, get response is: ~p", [Url, Body, RespBody]), hackney:close(ClientRef), - case catch jiffy:decode(RespBody, [return_maps]) of + case catch json:decode(RespBody) of #{<<"result">> := Result} -> {ok, Result}; #{<<"error">> := #{<<"code">> := Code, <<"message">> := Message}} -> @@ -201,7 +201,7 @@ do_get(Path, Params) when is_list(Path), is_list(Params) -> {ok, RespBody} = hackney:body(ClientRef), hackney:close(ClientRef), logger:debug("[iot_api_client] url: ~p, get response is: ~p", [Url, RespBody]), - case catch jiffy:decode(RespBody, [return_maps]) of + case catch json:decode(RespBody) of #{<<"result">> := Result} -> {ok, Result}; #{<<"error">> := #{<<"code">> := Code, <<"message">> := Message}} -> diff --git a/src/adapters/influxdb/influx_point.erl b/src/adapters/influxdb/influx_point.erl index d0828dd..9dcd787 100644 --- a/src/adapters/influxdb/influx_point.erl +++ b/src/adapters/influxdb/influx_point.erl @@ -45,7 +45,7 @@ field_val(V) when is_float(V) -> field_val(V) when is_binary(V) -> <<$", V/binary, $">>; field_val(V) when is_list(V); is_map(V) -> - S = base64:encode(iolist_to_binary(jiffy:encode(V, [force_utf8]))), + S = base64:encode(iolist_to_binary(json:encode(V))), <<$", "base64:", S/binary, $">>; field_val(true) -> <<"true">>; @@ -56,4 +56,3 @@ as_list(L) when is_list(L) -> L; as_list(L) when is_map(L) -> maps:to_list(L). - diff --git a/src/devtools/endpoint_kafka_test.erl b/src/devtools/endpoint_kafka_test.erl index d783c90..ee5af19 100644 --- a/src/devtools/endpoint_kafka_test.erl +++ b/src/devtools/endpoint_kafka_test.erl @@ -29,10 +29,10 @@ start_test() -> } }), - Json = jiffy:encode(#{ + Json = iolist_to_binary(json:encode(#{ <<"name">> => <<"anlicheng">>, <<"age">> => 30 - }, [force_utf8]), + })), endpoint:forward(Pid, Json), ok. @@ -57,4 +57,4 @@ test_consumer() -> _CommittedOffsets=[], message, SubscriberCallbackFun, _CallbackState=self()), - logger:debug("start subscriber res: ~p", [Res]). \ No newline at end of file + logger:debug("start subscriber res: ~p", [Res]). diff --git a/src/endpoint/endpoint_log.erl b/src/endpoint/endpoint_log.erl index e8952d9..c0bc86b 100644 --- a/src/endpoint/endpoint_log.erl +++ b/src/endpoint/endpoint_log.erl @@ -203,10 +203,11 @@ boolean_to_binary(false) -> -spec format_local_time() -> binary(). format_local_time() -> + MilliSeconds = erlang:system_time(millisecond) rem 1000, {{Year, Month, Day}, {Hour, Minute, Second}} = calendar:local_time(), iolist_to_binary(io_lib:format( - "~4..0B-~2..0B-~2..0B ~2..0B:~2..0B:~2..0B", - [Year, Month, Day, Hour, Minute, Second] + "~4..0B-~2..0B-~2..0B ~2..0B:~2..0B:~2..0B.~3..0B", + [Year, Month, Day, Hour, Minute, Second, MilliSeconds] )). -spec format_date(integer(), integer(), integer()) -> binary(). diff --git a/src/endpoint/endpoint_outbox.erl b/src/endpoint/endpoint_outbox.erl index d4b2ece..cfde648 100644 --- a/src/endpoint/endpoint_outbox.erl +++ b/src/endpoint/endpoint_outbox.erl @@ -266,7 +266,7 @@ ensure_dir(Dir) -> read_metadata(Path) -> case file:read_file(Path) of {ok, Bin} -> - case catch jiffy:decode(Bin, [return_maps]) of + case catch json:decode(Bin) of #{<<"write_segment">> := WriteSegment, <<"write_seq">> := WriteSeq, <<"acked_segment">> := AckedSegment, @@ -316,7 +316,7 @@ persist_metadata(#outbox{ <<"acked_segment">> => AckedSegment, <<"acked_seq">> => AckedSeq }, - Bin = iolist_to_binary(jiffy:encode(Metadata, [force_utf8])), + Bin = iolist_to_binary(json:encode(Metadata)), ok = file:write_file(TmpPath, Bin), ok = file:rename(TmpPath, MetadataPath), ok. diff --git a/src/iot.app.src b/src/iot.app.src index 1b97c39..d74f17d 100644 --- a/src/iot.app.src +++ b/src/iot.app.src @@ -10,7 +10,6 @@ eredis, ranch, cowboy, - jiffy, brod, hackney, poolboy, diff --git a/src/iot_util.erl b/src/iot_util.erl index 2c97506..edc4160 100644 --- a/src/iot_util.erl +++ b/src/iot_util.erl @@ -18,7 +18,7 @@ -spec is_json(Json :: term()) -> boolean(). is_json(Json) when is_binary(Json) -> - case catch jiffy:decode(Json, [return_maps]) of + case catch json:decode(Json) of Result when is_list(Result) orelse is_map(Result) -> true; _ -> @@ -77,17 +77,17 @@ chunks0([Hd | Tail], Size, Num, Target, AccTarget) -> chunks0(Tail, Size, Num - 1, [Hd | Target], AccTarget). json_data(Data) -> - jiffy:encode(#{ + iolist_to_binary(json:encode(#{ <<"result">> => Data - }, [force_utf8]). + })). json_error(ErrCode, ErrMessage) when is_integer(ErrCode) -> - jiffy:encode(#{ + iolist_to_binary(json:encode(#{ <<"error">> => #{ <<"code">> => ErrCode, <<"message">> => ErrMessage } - }, [force_utf8]). + })). uuid() -> rand_bytes(16). @@ -167,4 +167,4 @@ file_uri(Filename) when is_binary(Filename) -> {ok, <<"https://lgsiot.njau.edu.cn/upload/", Year/binary, $/, Month/binary, $/, Day/binary, $/, Filename/binary>>}; _ -> error - end. \ No newline at end of file + end. diff --git a/src/transport/http/container_handler.erl b/src/transport/http/container_handler.erl index 4dec572..b051c17 100644 --- a/src/transport/http/container_handler.erl +++ b/src/transport/http/container_handler.erl @@ -190,7 +190,7 @@ request_error_status(_) -> 400. decode_json_bytes(Data) when is_binary(Data) -> - case catch jiffy:decode(Data, [return_maps]) of + case catch json:decode(Data) of {'EXIT', _} -> error; {error, _} -> diff --git a/src/transport/http/endpoint_handler.erl b/src/transport/http/endpoint_handler.erl index 2a6611e..51d8eaf 100644 --- a/src/transport/http/endpoint_handler.erl +++ b/src/transport/http/endpoint_handler.erl @@ -195,7 +195,7 @@ handle_request("POST", "/endpoint/test", _, #{<<"protocol">> := <<"kafka">>, <<" handle_request("POST", "/endpoint/publish_metric", _, #{<<"route_key">> := RouteKey, <<"metric">> := Metric0}) when is_binary(RouteKey) -> if is_map(Metric0) orelse is_list(Metric0) -> - Metric = jiffy:encode(Metric0, [force_utf8]), + Metric = iolist_to_binary(json:encode(Metric0)), endpoint_subscription:publish(RouteKey, Metric), {ok, 200, iot_util:json_data(<<"ok">>)}; is_binary(Metric0) -> diff --git a/src/transport/http/event_stream_handler.erl b/src/transport/http/event_stream_handler.erl index cad5089..9c6c9a4 100644 --- a/src/transport/http/event_stream_handler.erl +++ b/src/transport/http/event_stream_handler.erl @@ -37,7 +37,7 @@ init(Req0, Opts) -> receiver_events(TaskId, Req) -> receive {stream_data, TaskId, Type, Stream} -> - Data = jiffy:encode(#{<<"type">> => Type, <<"stream">> => Stream}, [force_utf8]), + Data = iolist_to_binary(json:encode(#{<<"type">> => Type, <<"stream">> => Stream})), Body = iolist_to_binary([<<"event: message\n">>, <<"data: ", Data/binary, "\n">>, <<"\n">>]), ok = cowboy_req:stream_body(Body, nofin, Req), diff --git a/src/transport/http/http_protocol.erl b/src/transport/http/http_protocol.erl index 192726c..c33ef23 100644 --- a/src/transport/http/http_protocol.erl +++ b/src/transport/http/http_protocol.erl @@ -64,7 +64,7 @@ parse_body(Req0) -> {ok, Body, Req1} = read_body(Req0), case Body =/= <<"">> of true -> - {ok, catch jiffy:decode(Body, [return_maps]), Req1}; + {ok, catch json:decode(Body), Req1}; false -> {ok, #{}, Req1} end;