traefik/vendor/github.com/vulcand/route/utils.go
2017-03-09 13:13:02 +01:00

33 lines
629 B
Go

package route
import (
"net/http"
"strings"
)
// RawPath returns escaped url path section
func rawPath(r *http.Request) string {
// If there are no escape symbols, don't extract raw path
if !strings.ContainsRune(r.RequestURI, '%') {
if len(r.URL.Path) == 0 {
return "/"
}
return r.URL.Path
}
path := r.RequestURI
if path == "" {
path = "/"
}
// This is absolute URI, split host and port
if strings.Contains(path, "://") {
vals := strings.SplitN(path, r.URL.Host, 2)
if len(vals) == 2 {
path = vals[1]
}
}
idx := strings.IndexRune(path, '?')
if idx == -1 {
return path
}
return path[:idx]
}