github.com/aavshr/aws-sdk-go@v1.41.3/internal/s3shared/resource_request.go (about) 1 package s3shared 2 3 import ( 4 "strings" 5 6 "github.com/aavshr/aws-sdk-go/aws" 7 awsarn "github.com/aavshr/aws-sdk-go/aws/arn" 8 "github.com/aavshr/aws-sdk-go/aws/request" 9 "github.com/aavshr/aws-sdk-go/internal/s3shared/arn" 10 ) 11 12 // ResourceRequest represents the request and arn resource 13 type ResourceRequest struct { 14 Resource arn.Resource 15 Request *request.Request 16 } 17 18 // ARN returns the resource ARN 19 func (r ResourceRequest) ARN() awsarn.ARN { 20 return r.Resource.GetARN() 21 } 22 23 // AllowCrossRegion returns a bool value to denote if S3UseARNRegion flag is set 24 func (r ResourceRequest) AllowCrossRegion() bool { 25 return aws.BoolValue(r.Request.Config.S3UseARNRegion) 26 } 27 28 // UseFIPS returns true if request config region is FIPS 29 func (r ResourceRequest) UseFIPS() bool { 30 return IsFIPS(aws.StringValue(r.Request.Config.Region)) 31 } 32 33 // ResourceConfiguredForFIPS returns true if resource ARNs region is FIPS 34 // 35 // Deprecated: FIPS pseudo-regions will not be in the ARN 36 func (r ResourceRequest) ResourceConfiguredForFIPS() bool { 37 return IsFIPS(r.ARN().Region) 38 } 39 40 // IsCrossPartition returns true if client is configured for another partition, than 41 // the partition that resource ARN region resolves to. 42 func (r ResourceRequest) IsCrossPartition() bool { 43 return r.Request.ClientInfo.PartitionID != r.Resource.GetARN().Partition 44 } 45 46 // IsCrossRegion returns true if ARN region is different than client configured region 47 func (r ResourceRequest) IsCrossRegion() bool { 48 return IsCrossRegion(r.Request, r.Resource.GetARN().Region) 49 } 50 51 // HasCustomEndpoint returns true if custom client endpoint is provided 52 func (r ResourceRequest) HasCustomEndpoint() bool { 53 return len(aws.StringValue(r.Request.Config.Endpoint)) > 0 54 } 55 56 // IsFIPS returns true if region is a fips region 57 func IsFIPS(clientRegion string) bool { 58 return strings.HasPrefix(clientRegion, "fips-") || strings.HasSuffix(clientRegion, "-fips") 59 } 60 61 // IsCrossRegion returns true if request signing region is not same as configured region 62 func IsCrossRegion(req *request.Request, otherRegion string) bool { 63 return req.ClientInfo.SigningRegion != otherRegion 64 }