fix(api): bridge api bad spec
This commit is contained in:
parent
a5d8f2ce3b
commit
240bac0235
|
@ -23,11 +23,17 @@
|
||||||
-import(hoconsc, [mk/2, array/1, enum/1]).
|
-import(hoconsc, [mk/2, array/1, enum/1]).
|
||||||
|
|
||||||
%% Swagger specs from hocon schema
|
%% Swagger specs from hocon schema
|
||||||
-export([api_spec/0, paths/0, schema/1, namespace/0]).
|
-export([ api_spec/0
|
||||||
|
, paths/0
|
||||||
|
, schema/1
|
||||||
|
, namespace/0
|
||||||
|
]).
|
||||||
|
|
||||||
%% API callbacks
|
%% API callbacks
|
||||||
-export(['/bridges'/2, '/bridges/:id'/2,
|
-export([ '/bridges'/2
|
||||||
'/bridges/:id/operation/:operation'/2]).
|
, '/bridges/:id'/2
|
||||||
|
, '/bridges/:id/operation/:operation'/2
|
||||||
|
]).
|
||||||
|
|
||||||
-export([ lookup_from_local_node/2
|
-export([ lookup_from_local_node/2
|
||||||
]).
|
]).
|
||||||
|
@ -70,10 +76,12 @@ api_spec() ->
|
||||||
|
|
||||||
paths() -> ["/bridges", "/bridges/:id", "/bridges/:id/operation/:operation"].
|
paths() -> ["/bridges", "/bridges/:id", "/bridges/:id/operation/:operation"].
|
||||||
|
|
||||||
error_schema(Code, Message) ->
|
error_schema(Code, Message) when is_atom(Code) ->
|
||||||
[ {code, mk(string(), #{example => Code})}
|
error_schema([Code], Message);
|
||||||
, {message, mk(string(), #{example => Message})}
|
error_schema(Codes, Message) when is_list(Message) ->
|
||||||
].
|
error_schema(Codes, list_to_binary(Message));
|
||||||
|
error_schema(Codes, Message) when is_list(Codes) andalso is_binary(Message) ->
|
||||||
|
emqx_dashboard_swagger:error_codes(Codes, Message).
|
||||||
|
|
||||||
get_response_body_schema() ->
|
get_response_body_schema() ->
|
||||||
emqx_dashboard_swagger:schema_with_examples(emqx_bridge_schema:get_response(),
|
emqx_dashboard_swagger:schema_with_examples(emqx_bridge_schema:get_response(),
|
||||||
|
@ -214,7 +222,7 @@ schema("/bridges") ->
|
||||||
bridge_info_examples(post)),
|
bridge_info_examples(post)),
|
||||||
responses => #{
|
responses => #{
|
||||||
201 => get_response_body_schema(),
|
201 => get_response_body_schema(),
|
||||||
400 => error_schema('BAD_ARG', "Create bridge failed")
|
400 => error_schema('BAD_REQUEST', "Create bridge failed")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -242,7 +250,8 @@ schema("/bridges/:id") ->
|
||||||
bridge_info_examples(put)),
|
bridge_info_examples(put)),
|
||||||
responses => #{
|
responses => #{
|
||||||
200 => get_response_body_schema(),
|
200 => get_response_body_schema(),
|
||||||
400 => error_schema('BAD_ARG', "Update bridge failed")
|
404 => error_schema('NOT_FOUND', "Bridge not found"),
|
||||||
|
400 => error_schema('BAD_REQUEST', "Update bridge failed")
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
delete => #{
|
delete => #{
|
||||||
|
@ -299,8 +308,10 @@ schema("/bridges/:id/operation/:operation") ->
|
||||||
case emqx_bridge:lookup(BridgeType, BridgeName) of
|
case emqx_bridge:lookup(BridgeType, BridgeName) of
|
||||||
{ok, _} ->
|
{ok, _} ->
|
||||||
case ensure_bridge_created(BridgeType, BridgeName, Conf) of
|
case ensure_bridge_created(BridgeType, BridgeName, Conf) of
|
||||||
ok -> lookup_from_all_nodes(BridgeType, BridgeName, 200);
|
ok ->
|
||||||
{error, Error} -> {400, Error}
|
lookup_from_all_nodes(BridgeType, BridgeName, 200);
|
||||||
|
{error, Error} ->
|
||||||
|
{400, Error}
|
||||||
end;
|
end;
|
||||||
{error, not_found} ->
|
{error, not_found} ->
|
||||||
{404, error_msg('NOT_FOUND',<<"bridge not found">>)}
|
{404, error_msg('NOT_FOUND',<<"bridge not found">>)}
|
||||||
|
@ -335,7 +346,7 @@ lookup_from_local_node(BridgeType, BridgeName) ->
|
||||||
'/bridges/:id/operation/:operation'(post, #{bindings :=
|
'/bridges/:id/operation/:operation'(post, #{bindings :=
|
||||||
#{id := Id, operation := Op}}) ->
|
#{id := Id, operation := Op}}) ->
|
||||||
?TRY_PARSE_ID(Id, case operation_to_conf_req(Op) of
|
?TRY_PARSE_ID(Id, case operation_to_conf_req(Op) of
|
||||||
invalid -> {404, error_msg('BAD_ARG', <<"invalid operation">>)};
|
invalid -> {400, error_msg('BAD_REQUEST', <<"invalid operation">>)};
|
||||||
UpReq ->
|
UpReq ->
|
||||||
case emqx_conf:update(emqx_bridge:config_key_path() ++ [BridgeType, BridgeName],
|
case emqx_conf:update(emqx_bridge:config_key_path() ++ [BridgeType, BridgeName],
|
||||||
{UpReq, BridgeType, BridgeName}, #{override_to => cluster}) of
|
{UpReq, BridgeType, BridgeName}, #{override_to => cluster}) of
|
||||||
|
@ -357,7 +368,7 @@ ensure_bridge_created(BridgeType, BridgeName, Conf) ->
|
||||||
Conf, #{override_to => cluster}) of
|
Conf, #{override_to => cluster}) of
|
||||||
{ok, _} -> ok;
|
{ok, _} -> ok;
|
||||||
{error, Reason} ->
|
{error, Reason} ->
|
||||||
{error, error_msg('BAD_ARG', Reason)}
|
{error, error_msg('BAD_REQUEST', Reason)}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
zip_bridges([BridgesFirstNode | _] = BridgesAllNodes) ->
|
zip_bridges([BridgesFirstNode | _] = BridgesAllNodes) ->
|
||||||
|
|
Loading…
Reference in New Issue