mirror of
https://github.com/openziti/ziti.git
synced 2026-09-10 08:45:41 +00:00
39 lines
794 B
Go
39 lines
794 B
Go
package models
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/openziti/foundation/v2/errorz"
|
|
"github.com/openziti/ziti/v2/controller/storage/boltz"
|
|
"github.com/openziti/ziti/v2/controller/apierror"
|
|
)
|
|
|
|
func ToApiError(err error) *errorz.ApiError {
|
|
return ToApiErrorWithDefault(err, errorz.NewUnhandled)
|
|
}
|
|
|
|
func ToApiErrorWithDefault(err error, f func(err error) *errorz.ApiError) *errorz.ApiError {
|
|
var apiErr *errorz.ApiError
|
|
if errors.As(err, &apiErr) {
|
|
return apiErr
|
|
}
|
|
|
|
if boltz.IsErrNotFoundErr(err) {
|
|
result := errorz.NewNotFound()
|
|
result.Cause = err
|
|
return result
|
|
}
|
|
|
|
var fe *errorz.FieldError
|
|
if errors.As(err, &fe) {
|
|
return errorz.NewFieldApiError(fe)
|
|
}
|
|
|
|
var sve *apierror.ValidationErrors
|
|
if errors.As(err, &sve) {
|
|
return errorz.NewCouldNotValidate(sve)
|
|
}
|
|
|
|
return f(err)
|
|
}
|