Files
storage-minio/errors.go

28 lines
850 B
Go
Raw Normal View History

package minio
import (
miniogo "github.com/minio/minio-go/v7"
"code.nochebuena.dev/einherjar/core/xerrors"
)
// HandleError maps minio-go errors to xerrors types.
// Also available as client.HandleError(err).
func HandleError(err error) error {
if err == nil {
return nil
}
resp := miniogo.ToErrorResponse(err)
switch resp.Code {
case miniogo.NoSuchBucket:
return xerrors.NotFound("bucket not found").WithError(err)
case miniogo.NoSuchKey:
return xerrors.NotFound("object not found").WithError(err)
case miniogo.AccessDenied, miniogo.InvalidAccessKeyID:
return xerrors.PermissionDenied("access denied").WithError(err)
case miniogo.BucketAlreadyExists, miniogo.BucketAlreadyOwnedByYou:
return xerrors.AlreadyExists("bucket already exists").WithError(err)
}
return xerrors.Internal("unexpected storage error").WithError(err)
}