Update template
This commit is contained in:
		
							
								
								
									
										28
									
								
								internal/middleware/middleware.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								internal/middleware/middleware.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
package middleware
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"net/http"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Middleware is a function that wraps an http.Handler with custom logic.
 | 
			
		||||
type Middleware func(http.Handler) http.Handler
 | 
			
		||||
 | 
			
		||||
// Chain is a helper to build up a pipeline of middlewares, then apply them to a
 | 
			
		||||
// final handler.
 | 
			
		||||
type Chain struct {
 | 
			
		||||
	middlewares []Middleware
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Use appends a middleware to the chain.
 | 
			
		||||
func (c *Chain) Use(m Middleware) {
 | 
			
		||||
	c.middlewares = append(c.middlewares, m)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Then applies the entire chain of middlewares to the final handler in reverse
 | 
			
		||||
// order.
 | 
			
		||||
func (c *Chain) Then(h http.Handler) http.Handler {
 | 
			
		||||
	for i := len(c.middlewares) - 1; i >= 0; i-- {
 | 
			
		||||
		h = c.middlewares[i](h)
 | 
			
		||||
	}
 | 
			
		||||
	return h
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user