mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-31 05:40:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package protocol
 | |
| 
 | |
| import (
 | |
| 	"strings"
 | |
| 
 | |
| 	"github.com/aws/aws-sdk-go/aws"
 | |
| 	"github.com/aws/aws-sdk-go/aws/request"
 | |
| )
 | |
| 
 | |
| // HostPrefixHandlerName is the handler name for the host prefix request
 | |
| // handler.
 | |
| const HostPrefixHandlerName = "awssdk.endpoint.HostPrefixHandler"
 | |
| 
 | |
| // NewHostPrefixHandler constructs a build handler
 | |
| func NewHostPrefixHandler(prefix string, labelsFn func() map[string]string) request.NamedHandler {
 | |
| 	builder := HostPrefixBuilder{
 | |
| 		Prefix:   prefix,
 | |
| 		LabelsFn: labelsFn,
 | |
| 	}
 | |
| 
 | |
| 	return request.NamedHandler{
 | |
| 		Name: HostPrefixHandlerName,
 | |
| 		Fn:   builder.Build,
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // HostPrefixBuilder provides the request handler to expand and prepend
 | |
| // the host prefix into the operation's request endpoint host.
 | |
| type HostPrefixBuilder struct {
 | |
| 	Prefix   string
 | |
| 	LabelsFn func() map[string]string
 | |
| }
 | |
| 
 | |
| // Build updates the passed in Request with the HostPrefix template expanded.
 | |
| func (h HostPrefixBuilder) Build(r *request.Request) {
 | |
| 	if aws.BoolValue(r.Config.DisableEndpointHostPrefix) {
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	var labels map[string]string
 | |
| 	if h.LabelsFn != nil {
 | |
| 		labels = h.LabelsFn()
 | |
| 	}
 | |
| 
 | |
| 	prefix := h.Prefix
 | |
| 	for name, value := range labels {
 | |
| 		prefix = strings.Replace(prefix, "{"+name+"}", value, -1)
 | |
| 	}
 | |
| 
 | |
| 	r.HTTPRequest.URL.Host = prefix + r.HTTPRequest.URL.Host
 | |
| 	if len(r.HTTPRequest.Host) > 0 {
 | |
| 		r.HTTPRequest.Host = prefix + r.HTTPRequest.Host
 | |
| 	}
 | |
| }
 |