feature: add http middleware capability #18

Merged
xdrm-brackets merged 5 commits from feature/middleware into 0.3.0 2021-04-18 16:08:12 +00:00
1 changed files with 10 additions and 1 deletions
Showing only changes of commit 14ae59561c - Show all commits

View File

@ -12,8 +12,17 @@ import (
// Handler wraps the builder to handle requests // Handler wraps the builder to handle requests
type Handler Builder type Handler Builder
// ServeHTTP implements http.Handler // ServeHTTP implements http.Handler and wraps it in middlewares (adapters)
func (s Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { func (s Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
var h = http.HandlerFunc(s.handleRequest)
for _, adapter := range s.adapters {
h = adapter(h)
}
h(w, r)
}
func (s Handler) handleRequest(w http.ResponseWriter, r *http.Request) {
defer func() { defer func() {
if rc := recover(); rc != nil { if rc := recover(); rc != nil {
log.Printf("recovering request: %s\n", rc) log.Printf("recovering request: %s\n", rc)