mirror of
https://github.com/kairos-io/osbuilder.git
synced 2025-09-07 10:11:10 +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)
|
||
|
}
|