summary refs log tree commit diff
path: root/vendor/go.mau.fi/util/exhttp/middleware.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/go.mau.fi/util/exhttp/middleware.go')
-rw-r--r--vendor/go.mau.fi/util/exhttp/middleware.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/vendor/go.mau.fi/util/exhttp/middleware.go b/vendor/go.mau.fi/util/exhttp/middleware.go
new file mode 100644
index 0000000..733d348
--- /dev/null
+++ b/vendor/go.mau.fi/util/exhttp/middleware.go
@@ -0,0 +1,24 @@
+package exhttp
+
+import "net/http"
+
+// Middleware represents a middleware that can be applied to an [http.Handler].
+type Middleware func(http.Handler) http.Handler
+
+// ApplyMiddleware applies the provided [Middleware] functions to the given
+// router. The middlewares will be applied in the order they are provided.
+func ApplyMiddleware(router http.Handler, middlewares ...Middleware) http.Handler {
+	// Apply middlewares in reverse order because the first middleware provided
+	// needs to be the outermost one.
+	for i := len(middlewares) - 1; i >= 0; i-- {
+		router = middlewares[i](router)
+	}
+	return router
+}
+
+// StripPrefix is a wrapper for [http.StripPrefix] is compatible with the middleware pattern.
+func StripPrefix(prefix string) Middleware {
+	return func(next http.Handler) http.Handler {
+		return http.StripPrefix(prefix, next)
+	}
+}