1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
package customizations
import (
"context"
"fmt"
awsarn "github.com/aws/aws-sdk-go-v2/aws/arn"
s3arn "github.com/aws/aws-sdk-go-v2/service/internal/s3shared/arn"
"github.com/aws/smithy-go/middleware"
)
type updateOutpostARN struct {
}
func (*updateOutpostARN) ID() string {
return "setArnFieldName"
}
// updateOutpostARN handles updating the relevant operation member
// whose value is an S3 Outposts ARN provided by the customer.
func (m *updateOutpostARN) HandleSerialize(
ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler,
) (
out middleware.SerializeOutput, metadata middleware.Metadata, err error,
) {
v, ok := s3arn.GetARNField(in.Parameters)
if ok && awsarn.IsARN(*v) {
av, err := awsarn.Parse(*v)
if err != nil {
return out, metadata, fmt.Errorf("error parsing arn: %w", err)
}
resource, err := s3arn.ParseResource(av, resourceParser)
if err != nil {
return out, metadata, err
}
switch tv := resource.(type) {
case s3arn.OutpostAccessPointARN:
s3arn.SetARNField(in.Parameters, tv.AccessPointName)
case s3arn.OutpostBucketARN:
s3arn.SetARNField(in.Parameters, tv.BucketName)
}
}
return next.HandleSerialize(ctx, in)
}
// AddUpdateOutpostARN is used by operation runtimes to add
// this middleware to their middleware stack.
func AddUpdateOutpostARN(stack *middleware.Stack) error {
return stack.Serialize.Insert(
&updateOutpostARN{},
"OperationSerializer",
middleware.Before,
)
}
|