github.com/hellofresh/janus@v0.0.0-20230925145208-ce8de8183c67/pkg/middleware/recovery.go (about)

     1  package middleware
     2  
     3  import "net/http"
     4  
     5  // NewRecovery creates a new instance of Recovery
     6  func NewRecovery(recoverFunc func(w http.ResponseWriter, r *http.Request, err interface{})) func(http.Handler) http.Handler {
     7  	return func(handler http.Handler) http.Handler {
     8  		return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
     9  			defer func() {
    10  				if err := recover(); err != nil {
    11  					recoverFunc(w, r, err)
    12  				}
    13  			}()
    14  
    15  			handler.ServeHTTP(w, r)
    16  		})
    17  	}
    18  }