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) }