From 7f294a1f80833fa931d3aee0a279241f763f1560 Mon Sep 17 00:00:00 2001 From: Maxim Lebedev Date: Mon, 13 Nov 2023 09:12:36 +0600 Subject: [PATCH] :technologist: Created basic redirect middleware --- internal/middleware/redirect.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 internal/middleware/redirect.go diff --git a/internal/middleware/redirect.go b/internal/middleware/redirect.go new file mode 100644 index 0000000..1b1a2f6 --- /dev/null +++ b/internal/middleware/redirect.go @@ -0,0 +1,32 @@ +package middleware + +import ( + "net/http" + "net/url" +) + +type RedirectConfig struct { + Skipper Skipper + URL *url.URL + Code int +} + +func Redirect(config RedirectConfig) Interceptor { + if config.Skipper == nil { + config.Skipper = DefaultSkipper + } + + if config.Code == 0 { + config.Code = http.StatusMovedPermanently + } + + return func(w http.ResponseWriter, r *http.Request, next http.HandlerFunc) { + if config.Skipper(r) { + next(w, r) + + return + } + + http.RedirectHandler(config.URL.String(), config.Code).ServeHTTP(w, r) + } +}