aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--daemon/routes.go1
-rw-r--r--http/handler/handler.go4
-rw-r--r--middleware/header_config.go19
3 files changed, 20 insertions, 4 deletions
diff --git a/daemon/routes.go b/daemon/routes.go
index 74445c3..f11e6d6 100644
--- a/daemon/routes.go
+++ b/daemon/routes.go
@@ -39,6 +39,7 @@ func routes(cfg *config.Config, store *storage.Storage, feedHandler *feed.Handle
router = router.PathPrefix(cfg.BasePath()).Subrouter()
}
+ router.Use(middleware.HeaderConfig)
router.Use(middleware.Logging)
router.HandleFunc("/healthcheck", func(w http.ResponseWriter, r *http.Request) {
diff --git a/http/handler/handler.go b/http/handler/handler.go
index 59e8acd..137ff11 100644
--- a/http/handler/handler.go
+++ b/http/handler/handler.go
@@ -34,10 +34,6 @@ func (h *Handler) Use(f ControllerFunc) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
defer timer.ExecutionTime(time.Now(), r.URL.Path)
- if r.Header.Get("X-Forwarded-Proto") == "https" {
- h.cfg.IsHTTPS = true
- }
-
ctx := NewContext(r, h.store, h.router, h.translator)
request := NewRequest(r)
response := NewResponse(h.cfg, w, r, h.template)
diff --git a/middleware/header_config.go b/middleware/header_config.go
new file mode 100644
index 0000000..91d1820
--- /dev/null
+++ b/middleware/header_config.go
@@ -0,0 +1,19 @@
+// Copyright 2018 Frédéric Guillot. All rights reserved.
+// Use of this source code is governed by the Apache 2.0
+// license that can be found in the LICENSE file.
+
+package middleware
+
+import (
+ "net/http"
+)
+
+// HeaderConfig changes config values according to HTTP headers.
+func (m *Middleware) HeaderConfig(next http.Handler) http.Handler {
+ return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ if r.Header.Get("X-Forwarded-Proto") == "https" {
+ m.cfg.IsHTTPS = true
+ }
+ next.ServeHTTP(w, r)
+ })
+}