package domain import ( "fmt" "net/url" ) type InvalidURLError struct { URL string } func (e InvalidURLError) Error() string { return fmt.Sprintf("'%s': invalid URL", e.URL) } func parseURL(rawURL string) (*url.URL, error) { u, err := url.ParseRequestURI(rawURL) if err != nil { return nil, InvalidURLError{ URL: rawURL, } } return u, nil }