emqx/apps/emqx_authz/src/emqx_authz_api_cache.erl

77 lines
2.2 KiB
Erlang

%%--------------------------------------------------------------------
%% Copyright (c) 2020-2023 EMQ Technologies Co., Ltd. All Rights Reserved.
%%
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
%% You may obtain a copy of the License at
%%
%% http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing, software
%% distributed under the License is distributed on an "AS IS" BASIS,
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
%% See the License for the specific language governing permissions and
%% limitations under the License.
%%--------------------------------------------------------------------
-module(emqx_authz_api_cache).
-behaviour(minirest_api).
-include_lib("hocon/include/hoconsc.hrl").
-export([
api_spec/0,
paths/0,
schema/1
]).
-export([
clean_cache/2
]).
-define(BAD_REQUEST, 'BAD_REQUEST').
api_spec() ->
emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true}).
paths() ->
[
"/authorization/cache"
].
%%--------------------------------------------------------------------
%% Schema for each URI
%%--------------------------------------------------------------------
schema("/authorization/cache") ->
#{
'operationId' => clean_cache,
delete =>
#{
description => ?DESC(authorization_cache_delete),
responses =>
#{
204 => <<"No Content">>,
400 => emqx_dashboard_swagger:error_codes([?BAD_REQUEST], <<"Bad Request">>)
}
}
}.
clean_cache(delete, _) ->
case emqx_mgmt:clean_authz_cache_all() of
ok ->
{204};
{error, Reason} ->
{400, #{
code => <<"BAD_REQUEST">>,
message => bin(Reason)
}}
end.
%%--------------------------------------------------------------------
%% Internal functions
%%--------------------------------------------------------------------
bin(Term) -> erlang:iolist_to_binary(io_lib:format("~p", [Term])).