From b6377640952c9995b6a7e3383a9aa7c1d44358f8 Mon Sep 17 00:00:00 2001 From: JianBo He Date: Mon, 11 Oct 2021 15:23:42 +0800 Subject: [PATCH] chore(gw): return unloaded status instead of 404 --- apps/emqx_gateway/src/emqx_gateway_api.erl | 28 ++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/apps/emqx_gateway/src/emqx_gateway_api.erl b/apps/emqx_gateway/src/emqx_gateway_api.erl index a517d1b83..040cf4dd0 100644 --- a/apps/emqx_gateway/src/emqx_gateway_api.erl +++ b/apps/emqx_gateway/src/emqx_gateway_api.erl @@ -92,10 +92,30 @@ gateway_insta(delete, #{bindings := #{name := Name0}}) -> end end); gateway_insta(get, #{bindings := #{name := Name0}}) -> - with_gateway(Name0, fun(_, _) -> - GwConf = emqx_gateway_conf:gateway(Name0), - {200, GwConf#{<<"name">> => Name0}} - end); + try + GwName = try + binary_to_existing_atom(Name0) + catch _ : _ -> error(badname) + end, + case emqx_gateway:lookup(GwName) of + undefined -> + {200, #{name => GwName, status => unloaded}}; + Gateway -> + GwConf = emqx_gateway_conf:gateway(Name0), + GwInfo0 = emqx_gateway_utils:unix_ts_to_rfc3339( + [created_at, started_at, stopped_at], + Gateway), + GwInfo1 = maps:with([name, + status, + created_at, + started_at, + stopped_at], GwInfo0), + {200, maps:merge(GwConf, GwInfo1)} + end + catch + error : badname -> + return_http_error(400, "Bad gateway name") + end; gateway_insta(put, #{body := GwConf, bindings := #{name := Name0} }) ->