6 "github.com/aws/aws-sdk-go/aws"
7 "github.com/aws/aws-sdk-go/aws/request"
10 // HostPrefixHandlerName is the handler name for the host prefix request
12 const HostPrefixHandlerName = "awssdk.endpoint.HostPrefixHandler"
14 // NewHostPrefixHandler constructs a build handler
15 func NewHostPrefixHandler(prefix string, labelsFn func() map[string]string) request.NamedHandler {
16 builder := HostPrefixBuilder{
21 return request.NamedHandler{
22 Name: HostPrefixHandlerName,
27 // HostPrefixBuilder provides the request handler to expand and prepend
28 // the host prefix into the operation's request endpoint host.
29 type HostPrefixBuilder struct {
31 LabelsFn func() map[string]string
34 // Build updates the passed in Request with the HostPrefix template expanded.
35 func (h HostPrefixBuilder) Build(r *request.Request) {
36 if aws.BoolValue(r.Config.DisableEndpointHostPrefix) {
40 var labels map[string]string
41 if h.LabelsFn != nil {
46 for name, value := range labels {
47 prefix = strings.Replace(prefix, "{"+name+"}", value, -1)
50 r.HTTPRequest.URL.Host = prefix + r.HTTPRequest.URL.Host
51 if len(r.HTTPRequest.Host) > 0 {
52 r.HTTPRequest.Host = prefix + r.HTTPRequest.Host