package customizations
import (
awsmiddleware
)
type s3ObjectLambdaEndpoint struct {
UseEndpoint bool
UseAccelerate bool
EndpointResolver EndpointResolver
EndpointResolverOptions EndpointResolverOptions
}
func ( *s3ObjectLambdaEndpoint) () string {
return "S3:ObjectLambdaEndpoint"
}
func ( *s3ObjectLambdaEndpoint) (
context.Context, middleware.SerializeInput, middleware.SerializeHandler,
) (
middleware.SerializeOutput, middleware.Metadata, error,
) {
if !.UseEndpoint {
return .HandleSerialize(, )
}
, := .Request.(*http.Request)
if ! {
return , , fmt.Errorf("unknown transport type: %T", .Request)
}
if .EndpointResolverOptions.UseDualStackEndpoint == aws.DualStackEndpointStateEnabled {
return , , fmt.Errorf("client configured for dualstack but not supported for operation")
}
if .UseAccelerate {
return , , fmt.Errorf("client configured for accelerate but not supported for operation")
}
:= awsmiddleware.GetRegion()
:= .EndpointResolverOptions
, := .EndpointResolver.ResolveEndpoint(, )
if != nil {
return , ,
}
= awsmiddleware.SetServiceID(, s3ObjectLambda)
if len(.SigningName) > 0 && .Source == aws.EndpointSourceCustom {
= awsmiddleware.SetSigningName(, .SigningName)
} else {
= awsmiddleware.SetSigningName(, s3ObjectLambda)
}
.URL, = url.Parse(.URL)
if != nil {
return , ,
}
if len(.SigningRegion) > 0 {
= awsmiddleware.SetSigningRegion(, .SigningRegion)
} else {
= awsmiddleware.SetSigningRegion(, )
}
if .Source == aws.EndpointSourceServiceMetadata || !.HostnameImmutable {
updateS3HostForS3ObjectLambda()
}
return .HandleSerialize(, )
}