mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-31 10:37:56 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package s3shared
 | |
| 
 | |
| import (
 | |
| 	"strings"
 | |
| 
 | |
| 	"github.com/aws/aws-sdk-go/aws"
 | |
| 	awsarn "github.com/aws/aws-sdk-go/aws/arn"
 | |
| 	"github.com/aws/aws-sdk-go/aws/request"
 | |
| 	"github.com/aws/aws-sdk-go/internal/s3shared/arn"
 | |
| )
 | |
| 
 | |
| // ResourceRequest represents the request and arn resource
 | |
| type ResourceRequest struct {
 | |
| 	Resource arn.Resource
 | |
| 	Request  *request.Request
 | |
| }
 | |
| 
 | |
| // ARN returns the resource ARN
 | |
| func (r ResourceRequest) ARN() awsarn.ARN {
 | |
| 	return r.Resource.GetARN()
 | |
| }
 | |
| 
 | |
| // AllowCrossRegion returns a bool value to denote if S3UseARNRegion flag is set
 | |
| func (r ResourceRequest) AllowCrossRegion() bool {
 | |
| 	return aws.BoolValue(r.Request.Config.S3UseARNRegion)
 | |
| }
 | |
| 
 | |
| // UseFIPS returns true if request config region is FIPS
 | |
| func (r ResourceRequest) UseFIPS() bool {
 | |
| 	return IsFIPS(aws.StringValue(r.Request.Config.Region))
 | |
| }
 | |
| 
 | |
| // ResourceConfiguredForFIPS returns true if resource ARNs region is FIPS
 | |
| func (r ResourceRequest) ResourceConfiguredForFIPS() bool {
 | |
| 	return IsFIPS(r.ARN().Region)
 | |
| }
 | |
| 
 | |
| // IsCrossPartition returns true if client is configured for another partition, than
 | |
| // the partition that resource ARN region resolves to.
 | |
| func (r ResourceRequest) IsCrossPartition() bool {
 | |
| 	return r.Request.ClientInfo.PartitionID != r.Resource.GetARN().Partition
 | |
| }
 | |
| 
 | |
| // IsCrossRegion returns true if ARN region is different than client configured region
 | |
| func (r ResourceRequest) IsCrossRegion() bool {
 | |
| 	return IsCrossRegion(r.Request, r.Resource.GetARN().Region)
 | |
| }
 | |
| 
 | |
| // HasCustomEndpoint returns true if custom client endpoint is provided
 | |
| func (r ResourceRequest) HasCustomEndpoint() bool {
 | |
| 	return len(aws.StringValue(r.Request.Config.Endpoint)) > 0
 | |
| }
 | |
| 
 | |
| // IsFIPS returns true if region is a fips region
 | |
| func IsFIPS(clientRegion string) bool {
 | |
| 	return strings.HasPrefix(clientRegion, "fips-") || strings.HasSuffix(clientRegion, "-fips")
 | |
| }
 | |
| 
 | |
| // IsCrossRegion returns true if request signing region is not same as configured region
 | |
| func IsCrossRegion(req *request.Request, otherRegion string) bool {
 | |
| 	return req.ClientInfo.SigningRegion != otherRegion
 | |
| }
 | 
