package garage import ( "errors" "github.com/minio/minio-go/v7" "github.com/minio/minio-go/v7/pkg/credentials" ) // IsKeyNotFound returns true if the given error is the result of a key not // being found in a bucket. func IsKeyNotFound(err error) bool { var mErr minio.ErrorResponse return errors.As(err, &mErr) && mErr.Code == "NoSuchKey" } // S3APIClient is a client used to interact with garage's S3 API. type S3APIClient = *minio.Client // S3APICredentials describe data fields necessary for authenticating with a // garage S3 API endpoint. type S3APICredentials struct { ID string `yaml:"id"` Secret string `yaml:"secret"` } // NewS3APIClient returns a minio client configured to use the given garage S3 API // endpoint. func NewS3APIClient(addr string, creds S3APICredentials) (S3APIClient, error) { return minio.New(addr, &minio.Options{ Creds: credentials.NewStaticV4(creds.ID, creds.Secret, ""), Region: Region, }) }