diff --git a/src/erollbar_encoder.erl b/src/erollbar_encoder.erl index b12c6e6..2e0ca0f 100644 --- a/src/erollbar_encoder.erl +++ b/src/erollbar_encoder.erl @@ -21,11 +21,11 @@ create(Opts) -> branch=proplists:get_value(branch, Opts), send_args=lists:member(send_args, Opts)}. --spec encode([erollbar_message:msg()], erollbar:access_token(), encoder()) -> +-spec encode(erollbar_message:msg(), erollbar:access_token(), encoder()) -> [{binary(), term()}]. -encode(Items, AccessToken, Details) -> +encode(Item, AccessToken, Details) -> [{<<"access_token">>, AccessToken}, - {<<"data">>, [encode_item(Item, Details) || Item <- Items]}]. + {<<"data">>, encode_item(Item, Details)}]. % Internal encode_item(Item, Details) -> diff --git a/src/erollbar_handler.erl b/src/erollbar_handler.erl index 3f3141b..a332f8f 100644 --- a/src/erollbar_handler.erl +++ b/src/erollbar_handler.erl @@ -123,21 +123,21 @@ send_items(#state{requests=Requests, items=Items}=State) when length(Requests) > {dropped, length(Items)}, {reason, requests_exhausted}]), State#state{items = []}; -send_items(#state{items=Items, requests=Requests, endpoint=Endpoint, +send_items(#state{items=[Item|Items], requests=Requests, endpoint=Endpoint, access_token=AccessToken, details=Details, http_timeout=HttpTimeout}=State) -> - Message = erollbar_encoder:encode(Items, AccessToken, Details), + Message = erollbar_encoder:encode(Item, AccessToken, Details), MessageJson = jsx:encode(Message), case request(Endpoint, MessageJson, HttpTimeout) of {ok, RequestRef} -> - State#state{items = [], requests = [{RequestRef, length(Items)} | Requests]}; + send_items(State#state{items=Items, requests=[{RequestRef, 1} | Requests]}); {error, Reason} -> % Unknown error occured. Drop data and log info([{mod, erollbar_handler}, {at, send_items}, - {dropped, length(Items)}, + {dropped, 1}, {reason, Reason}]), - State#state{items = []} + send_items(State#state{items=Items}) end. info(Details) -> diff --git a/test/erollbar_basic_SUITE.erl b/test/erollbar_basic_SUITE.erl index 1a3eb30..85c3ca9 100644 --- a/test/erollbar_basic_SUITE.erl +++ b/test/erollbar_basic_SUITE.erl @@ -57,7 +57,7 @@ default_settings(Config) -> Body = parse_http(Data), BodyParsed = jsx:decode(Body), AccessCode = proplists:get_value(<<"access_token">>, BodyParsed), - [DataPart] = proplists:get_value(<<"data">>, BodyParsed), + DataPart = proplists:get_value(<<"data">>, BodyParsed), <<"default">> = proplists:get_value(<<"environment">>, DataPart), <<"error">> = proplists:get_value(<<"level">>, DataPart), <<"beam">> = proplists:get_value(<<"platform">>, DataPart), @@ -109,7 +109,7 @@ bigger_crash(Config) -> Body = parse_http(Data), BodyParsed = jsx:decode(Body), AccessCode = proplists:get_value(<<"access_token">>, BodyParsed), - [DataPart] = proplists:get_value(<<"data">>, BodyParsed), + DataPart = proplists:get_value(<<"data">>, BodyParsed), <<"error">> = proplists:get_value(<<"level">>, DataPart), <<"beam">> = proplists:get_value(<<"platform">>, DataPart), <<"erlang">> = proplists:get_value(<<"language">>, DataPart), @@ -142,7 +142,7 @@ crash_with_args(Config) -> [Data] = get_msg(1), Body = parse_http(Data), BodyParsed = jsx:decode(Body), - [DataPart] = proplists:get_value(<<"data">>, BodyParsed), + DataPart = proplists:get_value(<<"data">>, BodyParsed), BodyPart = proplists:get_value(<<"body">>, DataPart), Trace = proplists:get_value(<<"trace">>, BodyPart), [Frame1, _, _, _] = proplists:get_value(<<"frames">>, Trace), @@ -168,7 +168,7 @@ error(Config) -> Body = parse_http(Data), BodyParsed = jsx:decode(Body), AccessCode = proplists:get_value(<<"access_token">>, BodyParsed), - [DataPart] = proplists:get_value(<<"data">>, BodyParsed), + DataPart = proplists:get_value(<<"data">>, BodyParsed), <<"default">> = proplists:get_value(<<"environment">>, DataPart), <<"error">> = proplists:get_value(<<"level">>, DataPart), <<"beam">> = proplists:get_value(<<"platform">>, DataPart),