package proxy

import (
	"net"
	"net/http"
	"strconv"
)

var xForwardedHost = http.CanonicalHeaderKey("X-Forwarded-Host")

func getHost(req *http.Request) string {
	host := req.Host
	if req.Header.Get(xForwardedHost) != "" {
		host = req.Header.Get(xForwardedHost)
	}
	hostOnly, _, err := net.SplitHostPort(host)
	if err != nil {
		return host
	}
	return hostOnly
}

// toString Generic to string function, currently supports actual strings and integers
func toString(in interface{}) string {
	switch v := in.(type) {
	case string:
		return v
	case *string:
		return *v
	case int:
		return strconv.Itoa(v)
	}
	return ""
}