Przeglądaj źródła

fix: return error when receive HTTP code other than 2xx

Shawn 3 lat temu
rodzic
commit
262e68f7d2
1 zmienionych plików z 15 dodań i 13 usunięć
  1. 15 13
      apps/emqx_connector/src/emqx_connector_http.erl

+ 15 - 13
apps/emqx_connector/src/emqx_connector_http.erl

@@ -275,7 +275,7 @@ on_query(
     ),
     NRequest = formalize_request(Method, BasePath, Request),
     case
-        Result = ehttpc:request(
+        ehttpc:request(
             case KeyOrNum of
                 undefined -> PoolName;
                 _ -> {PoolName, KeyOrNum}
@@ -286,33 +286,35 @@ on_query(
             Retry
         )
     of
-        {error, Reason} ->
+        {error, Reason} = Result ->
             ?SLOG(error, #{
                 msg => "http_connector_do_request_failed",
                 request => NRequest,
                 reason => Reason,
                 connector => InstId
-            });
-        {ok, StatusCode, _} when StatusCode >= 200 andalso StatusCode < 300 ->
-            ok;
-        {ok, StatusCode, _, _} when StatusCode >= 200 andalso StatusCode < 300 ->
-            ok;
-        {ok, StatusCode, _} ->
+            }),
+            Result;
+        {ok, StatusCode, _} = Result when StatusCode >= 200 andalso StatusCode < 300 ->
+            Result;
+        {ok, StatusCode, _, _} = Result when StatusCode >= 200 andalso StatusCode < 300 ->
+            Result;
+        {ok, StatusCode, Headers} ->
             ?SLOG(error, #{
                 msg => "http connector do request, received error response",
                 request => NRequest,
                 connector => InstId,
                 status_code => StatusCode
-            });
-        {ok, StatusCode, _, _} ->
+            }),
+            {error, #{status_code => StatusCode, headers => Headers}};
+        {ok, StatusCode, Headers, Body} ->
             ?SLOG(error, #{
                 msg => "http connector do request, received error response",
                 request => NRequest,
                 connector => InstId,
                 status_code => StatusCode
-            })
-    end,
-    Result.
+            }),
+            {error, #{status_code => StatusCode, headers => Headers, body => Body}}
+    end.
 
 on_query_async(InstId, {send_message, Msg}, ReplyFunAndArgs, State) ->
     case maps:get(request, State, undefined) of