[NOD-398] Change API server type HandlerError to work with errors instead of error strings (#454)

* [NOD-398] Change API server type HandlerError to work with errors instead of error strings

* [NOD-398] Rename OriginalError -> Cause and isHandleError -> ok
This commit is contained in:
Ori Newman
2019-11-06 16:58:58 +02:00
committed by Svarog
parent 3cc6f2d648
commit a9ff9b0e70
8 changed files with 120 additions and 113 deletions

View File

@@ -2,6 +2,7 @@ package httpserverutils
import (
"fmt"
"github.com/pkg/errors"
"net/http"
"runtime/debug"
)
@@ -38,10 +39,16 @@ func RecoveryMiddleware(h http.Handler) http.Handler {
defer func() {
recoveryErr := recover()
if recoveryErr != nil {
var recoveryErrAsError error
if rErr, ok := recoveryErr.(error); ok {
recoveryErrAsError = rErr
} else {
recoveryErrAsError = errors.Errorf("%s", recoveryErr)
}
recoveryErrStr := fmt.Sprintf("%s", recoveryErr)
log.Criticalf("Fatal error: %s", recoveryErrStr)
log.Criticalf("Fatal error: %+v", recoveryErrStr)
log.Criticalf("Stack trace: %s", debug.Stack())
SendErr(ctx, w, NewInternalServerHandlerError(recoveryErrStr))
SendErr(ctx, w, recoveryErrAsError)
}
}()
h.ServeHTTP(w, r)