chore: bump fvt_test's minirest to latest(1.3.6)
This commit is contained in:
parent
11165f4a9c
commit
abcdad39e5
|
@ -27,4 +27,3 @@ ok
|
||||||
+ POST `/counter`
|
+ POST `/counter`
|
||||||
|
|
||||||
计数器加一
|
计数器加一
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
{erl_opts, [debug_info]}.
|
{erl_opts, [debug_info]}.
|
||||||
{deps,
|
{deps,
|
||||||
[
|
[
|
||||||
{minirest, {git, "https://github.com/emqx/minirest.git", {tag, "0.3.6"}}}
|
{minirest, {git, "https://github.com/emqx/minirest.git", {tag, "1.3.6"}}}
|
||||||
]}.
|
]}.
|
||||||
|
|
||||||
{shell, [
|
{shell, [
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
%% -*- mode: erlang -*-
|
%% -*- mode: erlang -*-
|
||||||
{application, http_server,
|
{application, http_server,
|
||||||
[{description, "An OTP application"},
|
[{description, "An HTTP server application"},
|
||||||
{vsn, "0.1.0"},
|
{vsn, "0.2.0"},
|
||||||
{registered, []},
|
{registered, []},
|
||||||
% {mod, {http_server_app, []}},
|
% {mod, {http_server_app, []}},
|
||||||
{modules, []},
|
{modules, []},
|
||||||
|
|
|
@ -10,51 +10,107 @@
|
||||||
stop/0
|
stop/0
|
||||||
]).
|
]).
|
||||||
|
|
||||||
-rest_api(#{
|
-behavior(minirest_api).
|
||||||
name => get_counter,
|
|
||||||
method => 'GET',
|
|
||||||
path => "/counter",
|
|
||||||
func => get_counter,
|
|
||||||
descr => "Check counter"
|
|
||||||
}).
|
|
||||||
-rest_api(#{
|
|
||||||
name => add_counter,
|
|
||||||
method => 'POST',
|
|
||||||
path => "/counter",
|
|
||||||
func => add_counter,
|
|
||||||
descr => "Counter plus one"
|
|
||||||
}).
|
|
||||||
|
|
||||||
-export([
|
-export([api_spec/0]).
|
||||||
get_counter/2,
|
-export([counter/2]).
|
||||||
add_counter/2
|
|
||||||
]).
|
api_spec() ->
|
||||||
|
{
|
||||||
|
[counter_api()],
|
||||||
|
[]
|
||||||
|
}.
|
||||||
|
|
||||||
|
counter_api() ->
|
||||||
|
MetaData = #{
|
||||||
|
get => #{
|
||||||
|
description => "Get counter",
|
||||||
|
summary => "Get counter",
|
||||||
|
responses => #{
|
||||||
|
200 => #{
|
||||||
|
content => #{
|
||||||
|
'application/json' =>
|
||||||
|
#{
|
||||||
|
type => object,
|
||||||
|
properties => #{
|
||||||
|
code => #{type => integer, example => 0},
|
||||||
|
data => #{type => integer, example => 0}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
post => #{
|
||||||
|
description => "Add counter",
|
||||||
|
summary => "Add counter",
|
||||||
|
'requestBody' => #{
|
||||||
|
content => #{
|
||||||
|
'application/json' => #{
|
||||||
|
schema =>
|
||||||
|
#{
|
||||||
|
type => object,
|
||||||
|
properties => #{
|
||||||
|
payload => #{type => string, example => <<"sample payload">>},
|
||||||
|
id => #{type => integer, example => 0}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
responses => #{
|
||||||
|
200 => #{
|
||||||
|
content => #{
|
||||||
|
'application/json' =>
|
||||||
|
#{
|
||||||
|
type => object,
|
||||||
|
properties => #{
|
||||||
|
code => #{type => integer, example => 0}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{"/counter", MetaData, counter}.
|
||||||
|
|
||||||
|
counter(get, _Params) ->
|
||||||
|
V = ets:info(relup_test_message, size),
|
||||||
|
{200, #{<<"content-type">> => <<"text/plain">>}, #{<<"code">> => 0, <<"data">> => V}};
|
||||||
|
counter(post, #{body := Params}) ->
|
||||||
|
case Params of
|
||||||
|
#{<<"payload">> := _, <<"id">> := Id} ->
|
||||||
|
ets:insert(relup_test_message, {Id, maps:remove(<<"id">>, Params)}),
|
||||||
|
{200, #{<<"code">> => 0}};
|
||||||
|
_ ->
|
||||||
|
io:format("discarded: ~p\n", [Params]),
|
||||||
|
{200, #{<<"code">> => -1}}
|
||||||
|
end.
|
||||||
|
|
||||||
start() ->
|
start() ->
|
||||||
application:ensure_all_started(minirest),
|
application:ensure_all_started(minirest),
|
||||||
_ = spawn(fun ets_owner/0),
|
_ = spawn(fun ets_owner/0),
|
||||||
Handlers = [{"/", minirest:handler(#{modules => [?MODULE]})}],
|
RanchOptions = #{
|
||||||
Dispatch = [{"/[...]", minirest, Handlers}],
|
max_connections => 512,
|
||||||
minirest:start_http(?MODULE, #{socket_opts => [inet, {port, 7077}]}, Dispatch).
|
num_acceptors => 4,
|
||||||
|
socket_opts => [{send_timeout, 5000}, {port, 7077}, {backlog, 512}]
|
||||||
|
},
|
||||||
|
Minirest = #{
|
||||||
|
base_path => "",
|
||||||
|
modules => [?MODULE],
|
||||||
|
dispatch => [{"/[...]", ?MODULE, []}],
|
||||||
|
protocol => http,
|
||||||
|
ranch_options => RanchOptions,
|
||||||
|
middlewares => [cowboy_router, cowboy_handler]
|
||||||
|
},
|
||||||
|
Res = minirest:start(?MODULE, Minirest),
|
||||||
|
minirest:update_dispatch(?MODULE),
|
||||||
|
Res.
|
||||||
|
|
||||||
stop() ->
|
stop() ->
|
||||||
ets:delete(relup_test_message),
|
ets:delete(relup_test_message),
|
||||||
minirest:stop_http(?MODULE).
|
minirest:stop(?MODULE).
|
||||||
|
|
||||||
get_counter(_Binding, _Params) ->
|
|
||||||
V = ets:info(relup_test_message, size),
|
|
||||||
return({ok, V}).
|
|
||||||
|
|
||||||
add_counter(_Binding, Params) ->
|
|
||||||
case lists:keymember(<<"payload">>, 1, Params) of
|
|
||||||
true ->
|
|
||||||
{value, {<<"id">>, ID}, Params1} = lists:keytake(<<"id">>, 1, Params),
|
|
||||||
ets:insert(relup_test_message, {ID, Params1});
|
|
||||||
_ ->
|
|
||||||
io:format("discarded: ~p\n", [Params]),
|
|
||||||
ok
|
|
||||||
end,
|
|
||||||
return().
|
|
||||||
|
|
||||||
ets_owner() ->
|
ets_owner() ->
|
||||||
ets:new(relup_test_message, [named_table, public]),
|
ets:new(relup_test_message, [named_table, public]),
|
||||||
|
|
Loading…
Reference in New Issue