github.com/Cloud-Foundations/Dominator@v0.3.4/lib/url/urlutil/open.go (about) 1 package urlutil 2 3 import ( 4 "errors" 5 "io" 6 "net/http" 7 "net/url" 8 "os" 9 ) 10 11 func open(rawurl string) (io.ReadCloser, error) { 12 u, err := url.Parse(rawurl) 13 if err != nil { 14 return nil, err 15 } 16 if u.Scheme == "file" { 17 return os.Open(u.Path) 18 } 19 if u.Scheme == "http" || u.Scheme == "https" { 20 resp, err := http.Get(rawurl) 21 if err != nil { 22 return nil, 23 errors.New("error getting: " + rawurl + ": " + err.Error()) 24 } 25 if resp.StatusCode != http.StatusOK { 26 return nil, 27 errors.New("error getting: " + rawurl + ": " + resp.Status) 28 } 29 return resp.Body, nil 30 } 31 return nil, errors.New("unknown scheme: " + u.Scheme) 32 }