traefik/vendor/github.com/vulcand/route/utils.go

34 lines
629 B
Go
Raw Normal View History

2017-02-07 21:33:23 +00:00
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]
}