package s3shared
import (
smithyhttp
awsmiddle
)
type EnableDualstack struct {
UseDualstack bool
DefaultServiceID string
}
func (*EnableDualstack) () string {
return "EnableDualstack"
}
func ( *EnableDualstack) (
context.Context, middleware.SerializeInput, middleware.SerializeHandler,
) (
middleware.SerializeOutput, middleware.Metadata, error,
) {
if smithyhttp.GetHostnameImmutable() {
return .HandleSerialize(, )
}
:= awsmiddle.GetServiceID()
if == "S3 Control" {
= "s3-control"
}
if len() == 0 {
= .DefaultServiceID
}
, := .Request.(*smithyhttp.Request)
if ! {
return , , fmt.Errorf("unknown request type %T", )
}
if .UseDualstack {
:= strings.Split(.URL.Host, ".")
if len() < 3 {
return , , fmt.Errorf("unable to update endpoint host for dualstack, hostname invalid, %s", .URL.Host)
}
for := 0; +1 < len(); ++ {
if strings.EqualFold([], ) {
[] = [] + ".dualstack"
break
}
}
.URL.Host = strings.Join(, ".")
}
return .HandleSerialize(, )
}