77 lines
2.5 KiB
Go
77 lines
2.5 KiB
Go
package exerr
|
|
|
|
import (
|
|
"gogs.mikescher.com/BlackForestBytes/goext/dataext"
|
|
"gogs.mikescher.com/BlackForestBytes/goext/langext"
|
|
)
|
|
|
|
type ErrorCategory struct{ Category string }
|
|
|
|
var (
|
|
CatWrap = ErrorCategory{"Wrap"} // The error is simply wrapping another error (e.g. when a grpc call returns an error)
|
|
CatSystem = ErrorCategory{"System"} // An internal system error (e.g. connection to db failed)
|
|
CatUser = ErrorCategory{"User"} // The user (the API caller) did something wrong (e.g. he has no permissions to do this)
|
|
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 }
|
|
|
|
var (
|
|
SevTrace = ErrorSeverity{"Trace"}
|
|
SevDebug = ErrorSeverity{"Debug"}
|
|
SevInfo = ErrorSeverity{"Info"}
|
|
SevWarn = ErrorSeverity{"Warn"}
|
|
SevErr = ErrorSeverity{"Err"}
|
|
SevFatal = ErrorSeverity{"Fatal"}
|
|
)
|
|
|
|
//goland:noinspection GoUnusedGlobalVariable
|
|
var AllSeverities = []ErrorSeverity{SevTrace, SevDebug, SevInfo, SevWarn, SevErr, SevFatal}
|
|
|
|
type ErrorType struct {
|
|
Key string
|
|
DefaultStatusCode *int
|
|
}
|
|
|
|
//goland:noinspection GoUnusedGlobalVariable
|
|
var (
|
|
TypeInternal = NewType("INTERNAL_ERROR", langext.Ptr(500))
|
|
TypePanic = NewType("PANIC", langext.Ptr(500))
|
|
TypeNotImplemented = NewType("NOT_IMPLEMENTED", langext.Ptr(500))
|
|
|
|
TypeWrap = NewType("Wrap", nil)
|
|
|
|
TypeBindFailURI = NewType("BINDFAIL_URI", langext.Ptr(400))
|
|
TypeBindFailQuery = NewType("BINDFAIL_QUERY", langext.Ptr(400))
|
|
TypeBindFailJSON = NewType("BINDFAIL_JSON", langext.Ptr(400))
|
|
TypeBindFailFormData = NewType("BINDFAIL_FORMDATA", langext.Ptr(400))
|
|
TypeBindFailHeader = NewType("BINDFAIL_HEADER", langext.Ptr(400))
|
|
|
|
TypeUnauthorized = NewType("UNAUTHORIZED", langext.Ptr(401))
|
|
TypeAuthFailed = NewType("AUTH_FAILED", langext.Ptr(401))
|
|
|
|
// other values come from pkgconfig
|
|
)
|
|
|
|
var registeredTypes = dataext.SyncSet[string]{}
|
|
|
|
func NewType(key string, defStatusCode *int) ErrorType {
|
|
insertOkay := registeredTypes.Add(key)
|
|
if !insertOkay {
|
|
panic("Cannot register same ErrType ('" + key + "') more than once")
|
|
}
|
|
|
|
return ErrorType{key, defStatusCode}
|
|
}
|
|
|
|
type LogPrintLevel string
|
|
|
|
const (
|
|
LogPrintFull LogPrintLevel = "Full"
|
|
LogPrintOverview LogPrintLevel = "Overview"
|
|
LogPrintShort LogPrintLevel = "Short"
|
|
)
|