28 lines
850 B
Go
28 lines
850 B
Go
|
|
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)
|
||
|
|
}
|