in utils/handler/handler.go [74:103]
func Wrap(h ErrHandler) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var status int
var errMsg string
if err := h(w, r); err != nil {
switch e := err.(type) {
case *Error:
for k, vs := range e.header {
for _, v := range vs {
w.Header().Add(k, v)
}
}
status = e.status
errMsg = e.msg
default:
status = http.StatusInternalServerError
errMsg = e.Error()
}
w.WriteHeader(status)
if _, err := w.Write([]byte(errMsg)); err != nil {
log.Errorf("Failed to write error response: %s", err)
}
} else {
status = http.StatusOK
}
if status >= 400 && status != 404 {
log.Infof("%d %s %s %s", status, r.Method, r.URL.Path, errMsg)
}
}
}