Compare commits

...

3 Commits

Author SHA1 Message Date
f5151eb214 v0.0.193 2023-07-24 11:38:57 +02:00
eefb9ac9f5 v0.0.192 2023-07-24 11:30:07 +02:00
468a7d212d v0.0.191 2023-07-24 11:18:25 +02:00
5 changed files with 34 additions and 38 deletions

View File

@@ -13,6 +13,7 @@ var (
CatForeign = ErrorCategory{"Foreign"} // A foreign error that some component threw (e.g. an unknown mongodb error), happens if we call Wrap(..) on an non-bmerror value
)
//goland:noinspection GoUnusedGlobalVariable
var AllCategories = []ErrorCategory{CatWrap, CatSystem, CatUser, CatForeign}
type ErrorSeverity struct{ Severity string }
@@ -26,6 +27,7 @@ var (
SevFatal = ErrorSeverity{"Fatal"}
)
//goland:noinspection GoUnusedGlobalVariable
var AllSeverities = []ErrorSeverity{SevTrace, SevDebug, SevInfo, SevWarn, SevErr, SevFatal}
type ErrorType struct {
@@ -33,6 +35,7 @@ type ErrorType struct {
DefaultStatusCode *int
}
//goland:noinspection GoUnusedGlobalVariable
var (
TypeInternal = ErrorType{"INTERNAL_ERROR", langext.Ptr(500)}
TypePanic = ErrorType{"PANIC", langext.Ptr(500)}
@@ -51,7 +54,7 @@ var (
// other values come from pkgconfig
)
func NewType(key string, defStatusCode *int) {
func NewType(key string, defStatusCode *int) ErrorType {
return ErrorType{key, defStatusCode}
}

View File

@@ -6,12 +6,12 @@ import (
)
type ErrorPackageConfig struct {
ZeroLogErrTraces bool // autom print zerolog logs on .Build() (for SevErr and SevFatal)
ZeroLogAllTraces bool // autom print zerolog logs on .Build() (for all Severities)
RecursiveErrors bool // errors contains their Origin-Error
ExtendedGinOutput bool // Log extended data (trace, meta, ...) to gin in err.Output()
ExtendGinOutput func(json map[string]any) // (Optionally) extend the gin output with more fields
ExtendGinDataOutput func(json map[string]any) // (Optionally) extend the gin `__data` output with more fields
ZeroLogErrTraces bool // autom print zerolog logs on .Build() (for SevErr and SevFatal)
ZeroLogAllTraces bool // autom print zerolog logs on .Build() (for all Severities)
RecursiveErrors bool // errors contains their Origin-Error
ExtendedGinOutput bool // Log extended data (trace, meta, ...) to gin in err.Output()
ExtendGinOutput func(err *ExErr, json map[string]any) // (Optionally) extend the gin output with more fields
ExtendGinDataOutput func(err *ExErr, depth int, json map[string]any) // (Optionally) extend the gin `__data` output with more fields
}
type ErrorPackageConfigInit struct {
@@ -19,8 +19,8 @@ type ErrorPackageConfigInit struct {
ZeroLogAllTraces bool
RecursiveErrors bool
ExtendedGinOutput bool
ExtendGinOutput *func(json map[string]any)
ExtendGinDataOutput *func(json map[string]any)
ExtendGinOutput *func(err *ExErr, json map[string]any)
ExtendGinDataOutput *func(err *ExErr, depth int, json map[string]any)
}
var initialized = false
@@ -30,8 +30,8 @@ var pkgconfig = ErrorPackageConfig{
ZeroLogAllTraces: false,
RecursiveErrors: true,
ExtendedGinOutput: false,
ExtendGinOutput: func(json map[string]any) {},
ExtendGinDataOutput: func(json map[string]any) {},
ExtendGinOutput: func(err *ExErr, json map[string]any) {},
ExtendGinDataOutput: func(err *ExErr, depth int, json map[string]any) {},
}
// Init initializes the exerr packages
@@ -47,8 +47,8 @@ func Init(cfg ErrorPackageConfigInit) {
ZeroLogAllTraces: cfg.ZeroLogAllTraces,
RecursiveErrors: cfg.RecursiveErrors,
ExtendedGinOutput: cfg.ExtendedGinOutput,
ExtendGinOutput: langext.Coalesce(cfg.ExtendGinOutput, func(json map[string]any) {}),
ExtendGinDataOutput: langext.Coalesce(cfg.ExtendGinDataOutput, func(json map[string]any) {}),
ExtendGinOutput: langext.Coalesce(cfg.ExtendGinOutput, func(err *ExErr, json map[string]any) {}),
ExtendGinDataOutput: langext.Coalesce(cfg.ExtendGinDataOutput, func(err *ExErr, depth int, json map[string]any) {}),
}
initialized = true

View File

@@ -7,43 +7,43 @@ import (
"time"
)
func (ee *ExErr) toJson() gin.H {
json := gin.H{}
func (ee *ExErr) toJson(depth int) gin.H {
ginJson := gin.H{}
if ee.UniqueID != "" {
json["id"] = ee.UniqueID
ginJson["id"] = ee.UniqueID
}
if ee.Category != CatWrap {
json["category"] = ee.Category
ginJson["category"] = ee.Category
}
if ee.Type != TypeWrap {
json["type"] = ee.Type
ginJson["type"] = ee.Type
}
if ee.StatusCode != nil {
json["statuscode"] = ee.StatusCode
ginJson["statuscode"] = ee.StatusCode
}
if ee.Message != "" {
json["message"] = ee.Message
ginJson["message"] = ee.Message
}
if ee.Caller != "" {
json["caller"] = ee.Caller
ginJson["caller"] = ee.Caller
}
if ee.Severity != SevErr {
json["severity"] = ee.Severity
ginJson["severity"] = ee.Severity
}
if ee.Timestamp != (time.Time{}) {
json["time"] = ee.Timestamp.Format(time.RFC3339)
ginJson["time"] = ee.Timestamp.Format(time.RFC3339)
}
if ee.WrappedErrType != "" {
json["wrappedErrType"] = ee.WrappedErrType
ginJson["wrappedErrType"] = ee.WrappedErrType
}
if ee.OriginalError != nil {
json["original"] = ee.OriginalError.toJson()
ginJson["original"] = ee.OriginalError.toJson(depth + 1)
}
pkgconfig.ExtendGinDataOutput(json)
pkgconfig.ExtendGinDataOutput(ee, depth, ginJson)
return json
return ginJson
}
func (ee *ExErr) Output(g *gin.Context) {
@@ -75,10 +75,10 @@ func (ee *ExErr) Output(g *gin.Context) {
}
if pkgconfig.ExtendedGinOutput {
ginOutput["__data"] = ee.toJson()
ginOutput["__data"] = ee.toJson(0)
}
pkgconfig.ExtendGinOutput(ginOutput)
pkgconfig.ExtendGinOutput(ee, ginOutput)
g.Render(statuscode, json.GoJsonRender{Data: ginOutput, NilSafeSlices: true, NilSafeMaps: true})
}

View File

@@ -50,10 +50,3 @@ func (ac *AppContext) RequestURI() string {
return ""
}
}
func (ac *AppContext) FinishSuccess(res HTTPResponse) HTTPResponse {
if ac.cancelled {
panic("Cannot finish a cancelled request")
}
return res
}

View File

@@ -1,5 +1,5 @@
package goext
const GoextVersion = "0.0.190"
const GoextVersion = "0.0.193"
const GoextVersionTimestamp = "2023-07-24T11:16:57+0200"
const GoextVersionTimestamp = "2023-07-24T11:38:57+0200"