32 lines
574 B
Go
32 lines
574 B
Go
|
package web
|
||
|
|
||
|
import "strings"
|
||
|
|
||
|
// parseURL parses a URL and returns the scheme, host, path and query.
|
||
|
func parseURL(url string) (scheme string, host string, path string, query string) {
|
||
|
schemePos := strings.Index(url, "://")
|
||
|
|
||
|
if schemePos != -1 {
|
||
|
scheme = url[:schemePos]
|
||
|
url = url[schemePos+len("://"):]
|
||
|
}
|
||
|
|
||
|
pathPos := strings.IndexByte(url, '/')
|
||
|
|
||
|
if pathPos != -1 {
|
||
|
host = url[:pathPos]
|
||
|
url = url[pathPos:]
|
||
|
}
|
||
|
|
||
|
queryPos := strings.IndexByte(url, '?')
|
||
|
|
||
|
if queryPos != -1 {
|
||
|
path = url[:queryPos]
|
||
|
query = url[queryPos+1:]
|
||
|
return
|
||
|
}
|
||
|
|
||
|
path = url
|
||
|
return
|
||
|
}
|