Switch to Cowboy REST

(cherry picked from commit 83e95eadc9)
This commit is contained in:
Loïc Hoguin 2016-01-18 14:35:15 +01:00
parent e6bb998015
commit c6e7dad266
5 changed files with 40 additions and 34 deletions

View File

@ -1,6 +1,6 @@
PROJECT = rabbitmq_top
DEPS = amqp_client rabbitmq_management webmachine
DEPS = amqp_client rabbitmq_management
DEP_PLUGINS = rabbit_common/mk/rabbitmq-plugin.mk

View File

@ -20,7 +20,7 @@
-export([dispatcher/0, web_ui/0]).
dispatcher() -> [{["top", node], rabbit_top_wm_processes, []},
{["top", "ets", node], rabbit_top_wm_ets_tables, []},
{["process", pid], rabbit_top_wm_process, []}].
dispatcher() -> [{"/top/:node", rabbit_top_wm_processes, []},
{"/top/ets/:node", rabbit_top_wm_ets_tables, []},
{"/process/:pid", rabbit_top_wm_process, []}].
web_ui() -> [{javascript, <<"top.js">>}].

View File

@ -16,32 +16,34 @@
-module(rabbit_top_wm_ets_tables).
-export([init/1, to_json/2, content_types_provided/2, is_authorized/2]).
-export([init/3]).
-export([rest_init/2, to_json/2, content_types_provided/2, is_authorized/2]).
-include_lib("rabbitmq_management/include/rabbit_mgmt.hrl").
-include_lib("amqp_client/include/amqp_client.hrl").
-include_lib("webmachine/include/webmachine.hrl").
%%--------------------------------------------------------------------
init(_Config) -> {ok, #context{}}.
init(_, _, _) -> {upgrade, protocol, cowboy_rest}.
rest_init(ReqData, _) -> {ok, ReqData, #context{}}.
content_types_provided(ReqData, Context) ->
{[{"application/json", to_json}], ReqData, Context}.
{[{<<"application/json">>, to_json}], ReqData, Context}.
to_json(ReqData, Context) ->
Sort = case wrq:get_qs_value("sort", ReqData) of
undefined -> memory;
Str -> list_to_atom(Str)
Sort = case cowboy_req:qs_val(<<"sort">>, ReqData) of
{undefined, _} -> memory;
{SortBin, _} -> list_to_atom(binary_to_list(SortBin))
end,
Node = b2a(rabbit_mgmt_util:id(node, ReqData)),
Order = case wrq:get_qs_value("sort_reverse", ReqData) of
"true" -> asc;
_ -> desc
Order = case cowboy_req:qs_val(<<"sort_reverse">>, ReqData) of
{<<"true">>, _} -> asc;
_ -> desc
end,
RowCount = case wrq:get_qs_value("row_count", ReqData) of
undefined -> 20;
List when is_list(List) -> list_to_integer(List)
RowCount = case cowboy_req:qs_val(<<"row_count">>, ReqData) of
{undefined, _} -> 20;
{RowCountBin, _} -> list_to_integer(binary_to_list(RowCountBin))
end,
rabbit_mgmt_util:reply([{node, Node},
{row_count, RowCount},

View File

@ -16,7 +16,8 @@
-module(rabbit_top_wm_process).
-export([init/1, to_json/2, resource_exists/2, content_types_provided/2,
-export([init/3]).
-export([rest_init/2, to_json/2, resource_exists/2, content_types_provided/2,
is_authorized/2]).
-define(ADDITIONAL_INFO,
@ -24,14 +25,15 @@
-include_lib("rabbitmq_management/include/rabbit_mgmt.hrl").
-include_lib("amqp_client/include/amqp_client.hrl").
-include_lib("webmachine/include/webmachine.hrl").
%%--------------------------------------------------------------------
init(_Config) -> {ok, #context{}}.
init(_, _, _) -> {upgrade, protocol, cowboy_rest}.
rest_init(ReqData, _) -> {ok, ReqData, #context{}}.
content_types_provided(ReqData, Context) ->
{[{"application/json", to_json}], ReqData, Context}.
{[{<<"application/json">>, to_json}], ReqData, Context}.
to_json(ReqData, Context) ->
rabbit_mgmt_util:reply(proc(ReqData), ReqData, Context).

View File

@ -16,32 +16,34 @@
-module(rabbit_top_wm_processes).
-export([init/1, to_json/2, content_types_provided/2, is_authorized/2]).
-export([init/3]).
-export([rest_init/2, to_json/2, content_types_provided/2, is_authorized/2]).
-include_lib("rabbitmq_management/include/rabbit_mgmt.hrl").
-include_lib("amqp_client/include/amqp_client.hrl").
-include_lib("webmachine/include/webmachine.hrl").
%%--------------------------------------------------------------------
init(_Config) -> {ok, #context{}}.
init(_, _, _) -> {upgrade, protocol, cowboy_rest}.
rest_init(ReqData, _) -> {ok, ReqData, #context{}}.
content_types_provided(ReqData, Context) ->
{[{"application/json", to_json}], ReqData, Context}.
{[{<<"application/json">>, to_json}], ReqData, Context}.
to_json(ReqData, Context) ->
Sort = case wrq:get_qs_value("sort", ReqData) of
undefined -> reduction_delta;
Str -> list_to_atom(Str)
Sort = case cowboy_req:qs_val(<<"sort">>, ReqData) of
{undefined, _} -> reduction_delta;
{SortBin, _} -> list_to_atom(binary_to_list(SortBin))
end,
Node = b2a(rabbit_mgmt_util:id(node, ReqData)),
Order = case wrq:get_qs_value("sort_reverse", ReqData) of
"true" -> asc;
_ -> desc
Order = case cowboy_req:qs_val(<<"sort_reverse">>, ReqData) of
{<<"true">>, _} -> asc;
_ -> desc
end,
RowCount = case wrq:get_qs_value("row_count", ReqData) of
undefined -> 20;
List when is_list(List) -> list_to_integer(List)
RowCount = case cowboy_req:qs_val(<<"row_count">>, ReqData) of
{undefined, _} -> 20;
{RowCountBin, _} -> list_to_integer(binary_to_list(RowCountBin))
end,
rabbit_mgmt_util:reply([{node, Node},
{row_count, RowCount},