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  }