diff --git a/base/api.go b/base/api.go index 04ff712..c4f03e3 100644 --- a/base/api.go +++ b/base/api.go @@ -3,11 +3,11 @@ package base import ( "errors" "fmt" - "io/ioutil" + "io" "net/http" + "strconv" "strings" "time" - "strconv" ) // Exec execute a WarpScript on the backend, returning resultat as byte array @@ -25,10 +25,19 @@ func (c *Client) Exec(warpScript string) ([]byte, error) { } if res.StatusCode != http.StatusOK { - return nil, errors.New(res.Header.Get(HeaderErrorMessage)) + + if h := res.Header.Get(HeaderErrorMessage); h != "" { + return nil, errors.New(h) + } + + if body, err := io.ReadAll(res.Body); err == nil { + return nil, errors.New(string(body)) + } + + return nil, fmt.Errorf("received status code '%s'", res.Status) } - bts, err := ioutil.ReadAll(res.Body) + bts, err := io.ReadAll(res.Body) if err != nil { return nil, err } @@ -59,7 +68,7 @@ func (c *Client) Find(selector Selector) ([]byte, error) { return nil, err } - bts, err := ioutil.ReadAll(res.Body) + bts, err := io.ReadAll(res.Body) if err != nil { return nil, err } @@ -90,7 +99,7 @@ func (c *Client) Update(gts GTSList) error { return err } - bts, err := ioutil.ReadAll(res.Body) + bts, err := io.ReadAll(res.Body) if err != nil { return err } @@ -122,13 +131,13 @@ func (c *Client) Meta(gtsList GTSList) ([]byte, error) { return nil, err } - bts, err := ioutil.ReadAll(res.Body) + bts, err := io.ReadAll(res.Body) if err != nil { return nil, err } if res.StatusCode != http.StatusOK { - return nil, fmt.Errorf("Headers: %+v\nBody: %+v", res.Header, string(bts)) + return nil, fmt.Errorf("headers: %+v\nBody: %+v", res.Header, string(bts)) } return nil, res.Body.Close() @@ -159,7 +168,7 @@ func (c *Client) Fetch(selector Selector, start time.Time, stop time.Time) ([]by return nil, err } - bts, err := ioutil.ReadAll(res.Body) + bts, err := io.ReadAll(res.Body) if err != nil { return nil, err } @@ -205,7 +214,7 @@ func (c *Client) Delete(selector Selector, start time.Time, stop time.Time) ([]b return nil, err } - bts, err := ioutil.ReadAll(res.Body) + bts, err := io.ReadAll(res.Body) if err != nil { return nil, err } diff --git a/base/errors.go b/base/errors.go index 870084a..012b46f 100644 --- a/base/errors.go +++ b/base/errors.go @@ -3,6 +3,6 @@ package base import "errors" var ( - NoReadTokenError = errors.New("This Warp10 call need a READ token access on the data") - NoWriteTokenError = errors.New("This Warp10 call need a WRITE token access on the data") -) \ No newline at end of file + NoReadTokenError = errors.New("this Warp10 call need a READ token access on the data") + NoWriteTokenError = errors.New("this Warp10 call need a WRITE token access on the data") +) diff --git a/base/gts-helper.go b/base/gts-helper.go index 492fd49..696dd85 100644 --- a/base/gts-helper.go +++ b/base/gts-helper.go @@ -100,24 +100,24 @@ func parseSensisionLine(in string) (int64, float64, float64, float64, string, La ctx := strings.Split(g[0], "/") if len(ctx) != 3 { - err = errors.New("Cannot parse datapoint: " + in) + err = errors.New("cannot parse datapoint: " + in) return ts, lat, long, alt, c, l, a, v, err } if ctx[0] == "" { - err = errors.New("No timestamp provided") + err = errors.New("no timestamp provided") return ts, lat, long, alt, c, l, a, v, err } ts, err = strconv.ParseInt(ctx[0], 10, 64) if err != nil { - err = errors.New("Cannot parse " + ctx[0] + " as valid timestamp") + err = errors.New("cannot parse " + ctx[0] + " as valid timestamp") return ts, lat, long, alt, c, l, a, v, err } if ctx[2] != "" { alt, err = strconv.ParseFloat(ctx[2], 64) if err != nil { - err = errors.New("Cannot parse " + ctx[0] + " as valid altitude") + err = errors.New("cannot parse " + ctx[0] + " as valid altitude") return ts, lat, long, alt, c, l, a, v, err } } @@ -125,19 +125,19 @@ func parseSensisionLine(in string) (int64, float64, float64, float64, string, La if ctx[1] != "" { latlong := strings.Split(ctx[1], ":") if len(latlong) != 2 { - err = errors.New("Cannot parse " + ctx[1] + " as valid latitude:longitude") + err = errors.New("cannot parse " + ctx[1] + " as valid latitude:longitude") return ts, lat, long, alt, c, l, a, v, err } lat, err = strconv.ParseFloat(latlong[0], 64) if err != nil { - err = errors.New("Cannot parse " + ctx[0] + " as valid latitude") + err = errors.New("cannot parse " + ctx[0] + " as valid latitude") return ts, lat, long, alt, c, l, a, v, err } long, err = strconv.ParseFloat(latlong[1], 64) if err != nil { - err = errors.New("Cannot parse " + ctx[0] + " as valid latitude") + err = errors.New("cannot parse " + ctx[0] + " as valid latitude") return ts, lat, long, alt, c, l, a, v, err } } @@ -149,7 +149,7 @@ func parseSensisionLine(in string) (int64, float64, float64, float64, string, La // test } //fmt.Println(fmt.Sprintf("%+v", classLabelsAttributes)) if len(classLabelsAttributes) != 2 { - err = errors.New("Cannot parse " + g[1] + " as valid class + labels + attributes") + err = errors.New("cannot parse " + g[1] + " as valid class + labels + attributes") return ts, lat, long, alt, c, l, a, v, err } @@ -168,7 +168,7 @@ func parseSensisionLine(in string) (int64, float64, float64, float64, string, La for _, labelPair := range labelsValue { keyVal := strings.Split(labelPair, "=") if len(keyVal) != 2 { - err = errors.New("Cannot parse " + labelPair + " as valid key and value label") + err = errors.New("cannot parse " + labelPair + " as valid key and value label") return ts, lat, long, alt, c, l, a, v, err } l[keyVal[0]] = keyVal[1] @@ -179,7 +179,7 @@ func parseSensisionLine(in string) (int64, float64, float64, float64, string, La vStr = strings.Trim(vStr, "'") if len(vStr) == 0 { - err = errors.New("Cannot parse " + strings.Join(g[2:], " ") + " as valid value") + err = errors.New("cannot parse " + strings.Join(g[2:], " ") + " as valid value") return ts, lat, long, alt, c, l, a, v, err }