feat(smalltrip): new exceptions package for structurerd error codes

This commit is contained in:
Guz
2025-02-25 14:28:07 -03:00
parent b9726e04a0
commit efceb2efd6

View File

@@ -0,0 +1,42 @@
package exceptions
import (
"errors"
"fmt"
"net/http"
)
type Exception struct {
Status int `json:"status"` // HTTP Status Code
Code string `json:"code"` // Application error code
Message string `json:"message"` // User friendly message
Err error `json:"error,omitempty"` // Go error
Severity Severity `json:"severity"` // Exception level
}
var (
_ fmt.Stringer = Exception{}
_ error = Exception{}
_ http.Handler = Exception{}
)
func (e Exception) String() string {
return fmt.Sprintf("%s %3d %s Exception %q", e.Severity, e.Status, e.Code, e.Message)
}
func (e Exception) Error() string {
return e.String()
}
func (e Exception) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if e.handler != nil {
e.handler(e, w, r)
}
handler, ok := r.Context().Value(handlerFuncCtxKey).(HandlerFunc)
if !ok {
e.handler(e, w, r)
}
handler(e, w, r)
}