26 lines
423 B
Go
26 lines
423 B
Go
|
package url
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
var errNoScheme = errors.New("no scheme")
|
||
|
var errEmptyURL = errors.New("URL cannot be empty")
|
||
|
|
||
|
// schemeFromURL returns the scheme from a URL string
|
||
|
func SchemeFromURL(url string) (string, error) {
|
||
|
if url == "" {
|
||
|
return "", errEmptyURL
|
||
|
}
|
||
|
|
||
|
i := strings.Index(url, ":")
|
||
|
|
||
|
// No : or : is the first character.
|
||
|
if i < 1 {
|
||
|
return "", errNoScheme
|
||
|
}
|
||
|
|
||
|
return url[0:i], nil
|
||
|
}
|