package common import ( "errors" "fmt" "io" "io/ioutil" "net/http" ) func FetchURL(url string) ([]byte, error) { resp, err := http.Get(url) if resp != nil { defer resp.Body.Close() } if err != nil { return nil, err } if resp.StatusCode != 200 { return nil, errors.New(fmt.Sprintf("Request failed, http status: %v", resp.StatusCode)) } body, err := ioutil.ReadAll(resp.Body) if err != nil { return nil, err } return body, nil } func URLReader(url string) (io.ReadCloser, error) { resp, err := http.Get(url) if resp == nil { return nil, errors.New("Server returned empty response") } if err != nil { // Even on error response may be non-nil resp.Body.Close() return nil, err } if resp.StatusCode != 200 { resp.Body.Close() return nil, errors.New(fmt.Sprintf("Request failed, http status: %v", resp.StatusCode)) } return resp.Body, nil }