From 7959b0daec6cb53c4353a11b99b52a6f880ed628 Mon Sep 17 00:00:00 2001 From: andig Date: Wed, 15 Sep 2021 11:39:20 +0200 Subject: [PATCH] Nissan: extract error codes from battery response --- vehicle/nissan/api.go | 10 ++++++++-- vehicle/nissan/types.go | 5 +++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/vehicle/nissan/api.go b/vehicle/nissan/api.go index 5c0b77a48..abee3dacc 100644 --- a/vehicle/nissan/api.go +++ b/vehicle/nissan/api.go @@ -100,8 +100,14 @@ func (v *API) Battery() (Response, error) { err = api.ErrTimeout } } else { - // wait for refresh, irrespective of a previous error - err = api.ErrMustRetry + if len(res.Errors) > 0 { + // extract error code + e := res.Errors[0] + err = fmt.Errorf("%s: %s", e.Code, e.Detail) + } else { + // wait for refresh, irrespective of a previous error + err = api.ErrMustRetry + } } return res, err diff --git a/vehicle/nissan/types.go b/vehicle/nissan/types.go index 51c4fdc87..30cf2559a 100644 --- a/vehicle/nissan/types.go +++ b/vehicle/nissan/types.go @@ -65,6 +65,11 @@ type Response struct { Type, ID string // battery refresh Attributes attributes `json:"attributes"` } `json:"data"` + Errors []Error +} + +type Error struct { + Status, Code, Detail string } type attributes struct {