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