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  }