From a6915a187ab807dcd5527ba06c27d558ef628531 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ferdinand=20M=C3=BCtsch?= Date: Fri, 21 Apr 2023 09:43:10 +0200 Subject: [PATCH] fix: properly handle error responses during wakatime import --- services/imports/wakatime.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/services/imports/wakatime.go b/services/imports/wakatime.go index be82fe8..c652cf3 100644 --- a/services/imports/wakatime.go +++ b/services/imports/wakatime.go @@ -146,17 +146,21 @@ func (w *WakatimeHeartbeatImporter) fetchHeartbeats(day string, baseUrl string) q.Add("date", day) req.URL.RawQuery = q.Encode() + var empty []*wakatime.HeartbeatEntry + res, err := w.httpClient.Do(w.withHeaders(req)) if err != nil { - return nil, err + return empty, err + } else if res.StatusCode == 402 { + return empty, nil // date outside free plan range -> return empty data, but do not throw error } else if res.StatusCode >= 400 { - return nil, errors.New(fmt.Sprintf("got status %d from wakatime api", res.StatusCode)) + return empty, errors.New(fmt.Sprintf("got status %d from wakatime api", res.StatusCode)) } defer res.Body.Close() var heartbeatsData wakatime.HeartbeatsViewModel if err := json.NewDecoder(res.Body).Decode(&heartbeatsData); err != nil { - return nil, err + return empty, err } return heartbeatsData.Data, nil