
This commit includes updates that affects the build, testing, and deployment of Tile38. - The root level build.sh has been broken up into multiple scripts and placed in the "scripts" directory. - The vendor directory has been updated to follow the Go modules rules, thus `make` should work on isolated environments. Also some vendored packages may have been updated to a later version, if needed. - The Makefile has been updated to allow for making single binaries such as `make tile38-server`. There is some scaffolding during the build process, so from now on all binaries should be made using make. For example, to run a development version of the tile38-cli binary, do this: make tile38-cli && ./tile38-cli not this: go run cmd/tile38-cli/main.go - Travis.CI docker push script has been updated to address a change to Docker's JSON repo meta output, which in turn fixes a bug where new Tile38 versions were not being properly pushed to Docker
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
|
|
}
|
|
}
|