summaryrefslogtreecommitdiff
path: root/vendor/github.com/minio/minio-go/v7/pkg
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/minio/minio-go/v7/pkg')
-rw-r--r--vendor/github.com/minio/minio-go/v7/pkg/notification/notification.go22
1 files changed, 22 insertions, 0 deletions
diff --git a/vendor/github.com/minio/minio-go/v7/pkg/notification/notification.go b/vendor/github.com/minio/minio-go/v7/pkg/notification/notification.go
index 97d33a4ec..931ca5bc2 100644
--- a/vendor/github.com/minio/minio-go/v7/pkg/notification/notification.go
+++ b/vendor/github.com/minio/minio-go/v7/pkg/notification/notification.go
@@ -21,6 +21,7 @@ import (
"encoding/xml"
"errors"
"fmt"
+ "strings"
"github.com/minio/minio-go/v7/pkg/set"
)
@@ -88,6 +89,27 @@ func NewArn(partition, service, region, accountID, resource string) Arn {
}
}
+var (
+ // ErrInvalidArnPrefix is returned when ARN string format does not start with 'arn'
+ ErrInvalidArnPrefix = errors.New("invalid ARN format, must start with 'arn:'")
+ // ErrInvalidArnFormat is returned when ARN string format is not valid
+ ErrInvalidArnFormat = errors.New("invalid ARN format, must be 'arn:<partition>:<service>:<region>:<accountID>:<resource>'")
+)
+
+// NewArnFromString parses string representation of ARN into Arn object.
+// Returns an error if the string format is incorrect.
+func NewArnFromString(arn string) (Arn, error) {
+ parts := strings.Split(arn, ":")
+ if len(parts) != 6 {
+ return Arn{}, ErrInvalidArnFormat
+ }
+ if parts[0] != "arn" {
+ return Arn{}, ErrInvalidArnPrefix
+ }
+
+ return NewArn(parts[1], parts[2], parts[3], parts[4], parts[5]), nil
+}
+
// String returns the string format of the ARN
func (arn Arn) String() string {
return "arn:" + arn.Partition + ":" + arn.Service + ":" + arn.Region + ":" + arn.AccountID + ":" + arn.Resource