authorizer/server/utils/urls.go

75 lines
1.4 KiB
Go
Raw Normal View History

package utils
import (
2022-01-31 06:05:24 +00:00
"log"
"net/url"
"strings"
2022-01-31 06:05:24 +00:00
"github.com/gin-gonic/gin"
)
2022-01-31 06:05:24 +00:00
// GetHost returns hostname from request context
func GetHost(c *gin.Context) string {
scheme := "http"
if c.Request.TLS != nil {
scheme = "https"
}
log.Println("=> url:", scheme+"://"+c.Request.Host)
return scheme + "://" + c.Request.Host
}
// GetHostName function returns hostname and port
func GetHostParts(uri string) (string, string) {
tempURI := uri
if !strings.HasPrefix(tempURI, "http://") && !strings.HasPrefix(tempURI, "https://") {
tempURI = "https://" + tempURI
}
u, err := url.Parse(tempURI)
if err != nil {
return "localhost", "8080"
}
host := u.Hostname()
port := u.Port()
return host, port
}
// GetDomainName function to get domain name
func GetDomainName(uri string) string {
tempURI := uri
if !strings.HasPrefix(tempURI, "http://") && !strings.HasPrefix(tempURI, "https://") {
tempURI = "https://" + tempURI
}
u, err := url.Parse(tempURI)
if err != nil {
return `localhost`
}
2021-07-21 23:52:53 +00:00
host := u.Hostname()
2021-07-28 18:23:54 +00:00
// code to get root domain in case of sub-domains
hostParts := strings.Split(host, ".")
hostPartsLen := len(hostParts)
if hostPartsLen == 1 {
return host
}
if hostPartsLen == 2 {
if hostParts[0] == "www" {
return hostParts[1]
} else {
return host
}
}
if hostPartsLen > 2 {
return strings.Join(hostParts[hostPartsLen-2:], ".")
}
2021-07-21 23:52:53 +00:00
return host
}