...
1 package registryurl
2
3 import (
4 "errors"
5 "net/url"
6 "strings"
7 )
8
9
10
11
12
13
14
15
16 func Parse(registryURL string) (*url.URL, error) {
17
18 if !strings.Contains(registryURL, "://") && !strings.HasPrefix(registryURL, "//") {
19 registryURL = "//" + registryURL
20 }
21
22 u, err := url.Parse(registryURL)
23 if err != nil {
24 return nil, err
25 }
26
27 if u.Scheme != "" && u.Scheme != "https" && u.Scheme != "http" {
28 return nil, errors.New("unsupported scheme: " + u.Scheme)
29 }
30
31 if u.Hostname() == "" {
32 return nil, errors.New("no hostname in URL")
33 }
34
35 u.RawQuery = ""
36 return u, nil
37 }
38
39
40
41
42 func GetHostname(u *url.URL) string {
43 return u.Hostname()
44 }
45
46
47
48
49 func GetPort(u *url.URL) string {
50 return u.Port()
51 }
52
View as plain text