mirror of
https://github.com/kairos-io/osbuilder.git
synced 2025-09-06 01:31:22 +00:00
60 lines
930 B
Go
60 lines
930 B
Go
package errors
|
|
|
|
import (
|
|
"errors"
|
|
|
|
client "github.com/Yamashou/gqlgenc/clientv2"
|
|
)
|
|
|
|
type KnownError string
|
|
|
|
func (k KnownError) String() string {
|
|
return string(k)
|
|
}
|
|
|
|
func (k KnownError) Error() string {
|
|
return string(k)
|
|
}
|
|
|
|
const (
|
|
ErrorNotFound KnownError = "could not find resource"
|
|
)
|
|
|
|
type wrappedErrorResponse struct {
|
|
err *client.ErrorResponse
|
|
}
|
|
|
|
func (er *wrappedErrorResponse) Has(err KnownError) bool {
|
|
if er.err.GqlErrors == nil {
|
|
return false
|
|
}
|
|
|
|
for _, g := range *er.err.GqlErrors {
|
|
if g.Message == string(err) {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
func newAPIError(err *client.ErrorResponse) *wrappedErrorResponse {
|
|
return &wrappedErrorResponse{
|
|
err: err,
|
|
}
|
|
}
|
|
|
|
func IsNotFound(err error) bool {
|
|
if err == nil {
|
|
return false
|
|
}
|
|
|
|
errorResponse := new(client.ErrorResponse)
|
|
ok := errors.As(err, &errorResponse)
|
|
if !ok {
|
|
return false
|
|
}
|
|
|
|
return newAPIError(errorResponse).Has(ErrorNotFound)
|
|
}
|