in calnex/api/api.go [439:477]
func (a *API) FetchCsv(channel Channel) ([][]string, error) {
url := fmt.Sprintf(dataURL, a.source, channel, MeasureChannelDatatypeMap[channel])
resp, err := a.Client.Get(url)
if err != nil {
return nil, err
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
return nil, errors.New(http.StatusText(resp.StatusCode))
}
b, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
// Check for empty response
r := &Result{}
if err = json.Unmarshal(b, r); err == nil {
return nil, fmt.Errorf(r.Message)
}
var res [][]string
csvReader := csv.NewReader(bytes.NewReader(b))
csvReader.Comment = '#'
for {
csvLine, err := csvReader.Read()
if err != nil {
if errors.Is(err, io.EOF) {
break
} else {
return nil, fmt.Errorf("failed to parse csv for data from channel %s: %v", channel.String(), err)
}
}
res = append(res, csvLine)
}
return res, nil
}