From 33d1aac029336a26543d703afa5fc86f38c1ec61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Hedenstro=CC=88m?= <erik@hedenstroem.com> Date: Fri, 1 Apr 2016 14:00:35 +0200 Subject: [PATCH] Cleaned up http handler --- apps/consul_proxy/src/consul_proxy_app.erl | 2 +- ...ler.erl => consul_proxy_handler_cache.erl} | 25 ++++++++++++++----- .../src/consul_proxy_middleware_hijack.erl | 6 +++++ .../src/consul_proxy_middleware_redirect.erl | 4 --- test/defaults.consul | 1 + 5 files changed, 27 insertions(+), 11 deletions(-) rename apps/consul_proxy/src/{consul_proxy_handler.erl => consul_proxy_handler_cache.erl} (53%) create mode 100644 apps/consul_proxy/src/consul_proxy_middleware_hijack.erl diff --git a/apps/consul_proxy/src/consul_proxy_app.erl b/apps/consul_proxy/src/consul_proxy_app.erl index dac6178..bdd722d 100644 --- a/apps/consul_proxy/src/consul_proxy_app.erl +++ b/apps/consul_proxy/src/consul_proxy_app.erl @@ -44,7 +44,7 @@ start(_StartType, StartArgs) -> Dispatch = cowboyku_router:compile([ {'_', [ - {"/[:type]", consul_proxy_handler, []} + {"/api/cache/[:action]", consul_proxy_handler_cache, []} ]} ]), diff --git a/apps/consul_proxy/src/consul_proxy_handler.erl b/apps/consul_proxy/src/consul_proxy_handler_cache.erl similarity index 53% rename from apps/consul_proxy/src/consul_proxy_handler.erl rename to apps/consul_proxy/src/consul_proxy_handler_cache.erl index 070c6aa..fdf5f91 100644 --- a/apps/consul_proxy/src/consul_proxy_handler.erl +++ b/apps/consul_proxy/src/consul_proxy_handler_cache.erl @@ -1,4 +1,4 @@ --module(consul_proxy_handler). +-module(consul_proxy_handler_cache). -export([init/3]). -export([handle/2]). -export([terminate/3]). @@ -11,14 +11,27 @@ init(_Transport, Req, Args) -> -spec handle(Req :: req(), State :: term()) -> {ok, req(), term()}. handle(Req, State) -> + {Method, Req1} = cowboyku_req:method(Req), + {Action, Req2} = cowboyku_req:binding(action, Req1, <<"default">>), + handle(Method, Action, Req2, State). + +-spec terminate(Reason :: term(), Req :: req(), State :: term()) -> ok. +terminate(_Reason, _Req, _State) -> + ok. + +handle(_Method, <<"purge">>, Req, State) -> Message = io_lib:format("Purging ~p items from cache", [consul_proxy_utils:cache_size()]), lager:info(Message), consul_proxy_utils:cache_purge(), - {ok, Req2} = cowboyku_req:reply(200, [ + {ok, Req1} = cowboyku_req:reply(200, [ {<<"content-type">>, <<"text/plain; charset=utf-8">>} ], Message, Req), - {ok, Req2, State}. + {ok, Req1, State}; --spec terminate(Reason :: term(), Req :: req(), State :: term()) -> ok. -terminate(_Reason, _Req, _State) -> - ok. +handle(Method, Action, Req, State) -> + Message = io_lib:format("Unhandled request, ~s ~s", [Method, Action]), + lager:warning(Message), + {ok, Req1} = cowboyku_req:reply(404, [ + {<<"content-type">>, <<"text/plain; charset=utf-8">>} + ], Message, Req), + {ok, Req1, State}. diff --git a/apps/consul_proxy/src/consul_proxy_middleware_hijack.erl b/apps/consul_proxy/src/consul_proxy_middleware_hijack.erl new file mode 100644 index 0000000..aaad416 --- /dev/null +++ b/apps/consul_proxy/src/consul_proxy_middleware_hijack.erl @@ -0,0 +1,6 @@ +-module(consul_proxy_middleware_hijack). +-behaviour(cowboyku_middleware). +-export([execute/2]). + +execute(Req, Env) -> + {ok, Req, Env}. diff --git a/apps/consul_proxy/src/consul_proxy_middleware_redirect.erl b/apps/consul_proxy/src/consul_proxy_middleware_redirect.erl index 6c26aaf..f671a36 100644 --- a/apps/consul_proxy/src/consul_proxy_middleware_redirect.erl +++ b/apps/consul_proxy/src/consul_proxy_middleware_redirect.erl @@ -2,10 +2,6 @@ -behaviour(cowboyku_middleware). -export([execute/2]). --define(PBKDF2_SALT_LENGTH, 16). --define(PBKDF2_ITERATIONS, 4096). --define(PBKDF2_DERIVED_LENGTH, 32). - execute(Req, Env) -> Req1 = vegur_request_log:stamp(pre_redirect, Req), consul_proxy_utils:lookup_and_check(<<"redirects:">>, fun lookup_redirect/2, fun check_redirect/3, Req1, Env, true). diff --git a/test/defaults.consul b/test/defaults.consul index b8fd781..d11fbab 100644 --- a/test/defaults.consul +++ b/test/defaults.consul @@ -6,3 +6,4 @@ consul_proxy/scripts/resolver-example.erl:e0NhcHR1cmUsX30gPSBjb3dib3lrdV9yZXE6bW consul_proxy/watchers/nodes:WwogICAgImh0dHBzOi8vdGVzdC5zZXJ2aWNlLmRvY2tlci9pbmZvLnBocCIKXQ== consul_proxy/watchers/services:WwogICAgImh0dHBzOi8vdGVzdC5zZXJ2aWNlLmRvY2tlci9pbmZvLnBocCIKXQ== consul_proxy/watchers/kv:WwogICAgImh0dHBzOi8vdGVzdC5zZXJ2aWNlLmRvY2tlci9pbmZvLnBocCIKXQ== +consul_proxy/hijackers:WwogICJoaWphY2tlcjowdEhWdFNhOThrSGkyZStkVHVWdHo3S3lYWTgzVys3cGZ6eEZYd2VKWUtualcxOXRSeHBVbFFSV1lYbGI4V21YIgpd -- GitLab