github.com/aavshr/aws-sdk-go@v1.41.3/internal/s3shared/arn/accesspoint_arn.go (about)

     1  package arn
     2  
     3  import (
     4  	"strings"
     5  
     6  	"github.com/aavshr/aws-sdk-go/aws/arn"
     7  )
     8  
     9  // AccessPointARN provides representation
    10  type AccessPointARN struct {
    11  	arn.ARN
    12  	AccessPointName string
    13  }
    14  
    15  // GetARN returns the base ARN for the Access Point resource
    16  func (a AccessPointARN) GetARN() arn.ARN {
    17  	return a.ARN
    18  }
    19  
    20  // ParseAccessPointResource attempts to parse the ARN's resource as an
    21  // AccessPoint resource.
    22  //
    23  // Supported Access point resource format:
    24  //	- Access point format: arn:{partition}:s3:{region}:{accountId}:accesspoint/{accesspointName}
    25  //	- example: arn.aws.s3.us-west-2.012345678901:accesspoint/myaccesspoint
    26  //
    27  func ParseAccessPointResource(a arn.ARN, resParts []string) (AccessPointARN, error) {
    28  	if len(a.Region) == 0 {
    29  		return AccessPointARN{}, InvalidARNError{ARN: a, Reason: "region not set"}
    30  	}
    31  	if len(a.AccountID) == 0 {
    32  		return AccessPointARN{}, InvalidARNError{ARN: a, Reason: "account-id not set"}
    33  	}
    34  	if len(resParts) == 0 {
    35  		return AccessPointARN{}, InvalidARNError{ARN: a, Reason: "resource-id not set"}
    36  	}
    37  	if len(resParts) > 1 {
    38  		return AccessPointARN{}, InvalidARNError{ARN: a, Reason: "sub resource not supported"}
    39  	}
    40  
    41  	resID := resParts[0]
    42  	if len(strings.TrimSpace(resID)) == 0 {
    43  		return AccessPointARN{}, InvalidARNError{ARN: a, Reason: "resource-id not set"}
    44  	}
    45  
    46  	return AccessPointARN{
    47  		ARN:             a,
    48  		AccessPointName: resID,
    49  	}, nil
    50  }