Switch from webmachine to cowboy

Fixes #11.
[#121658745]
This commit is contained in:
Jean-Sébastien Pédron 2016-06-16 13:04:29 +02:00
parent dc74dea30f
commit 500f5ad61b
5 changed files with 43 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,35 @@
-module(rabbit_top_wm_ets_tables).
-export([init/1, to_json/2, content_types_provided/2, is_authorized/2]).
-export([init/3, 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(Req, _Opts) ->
{ok, Req, #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;
{Bin1, _} -> b2a(Bin1)
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;
{Bin2, _} -> list_to_integer(binary_to_list(Bin2))
end,
rabbit_mgmt_util:reply([{node, Node},
{row_count, RowCount},

View File

@ -16,7 +16,7 @@
-module(rabbit_top_wm_process).
-export([init/1, to_json/2, resource_exists/2, content_types_provided/2,
-export([init/3, rest_init/2, to_json/2, resource_exists/2, content_types_provided/2,
is_authorized/2]).
-define(ADDITIONAL_INFO,
@ -24,14 +24,17 @@
-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(Req, _Opts) ->
{ok, Req, #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,35 @@
-module(rabbit_top_wm_processes).
-export([init/1, to_json/2, content_types_provided/2, is_authorized/2]).
-export([init/3, 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(Req, _Opts) ->
{ok, Req, #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;
{Bin1, _} -> b2a(Bin1)
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;
{Bin2, _} -> list_to_integer(binary_to_list(Bin2))
end,
rabbit_mgmt_util:reply([{node, Node},
{row_count, RowCount},