diff --git a/vehicle/fiat/provider.go b/vehicle/fiat/provider.go index 1fdfc4b49..c67f4887e 100644 --- a/vehicle/fiat/provider.go +++ b/vehicle/fiat/provider.go @@ -14,7 +14,6 @@ type Provider struct { statusG func() (interface{}, error) action func(action, cmd string) (ActionResponse, error) expiry time.Duration - refreshId string refreshTime time.Time } @@ -41,12 +40,12 @@ func NewProvider(api *API, vin, pin string, expiry, cache time.Duration) *Provid return impl } -func (v *Provider) deepRefresh() (string, error) { +func (v *Provider) deepRefresh() error { res, err := v.action("ev", "DEEPREFRESH") if err == nil && res.ResponseStatus != "pending" { err = fmt.Errorf("invalid response status: %s", res.ResponseStatus) } - return res.CorrelationId, err + return err } func (v *Provider) status(statusG func() (StatusResponse, error)) (StatusResponse, error) { @@ -57,9 +56,8 @@ func (v *Provider) status(statusG func() (StatusResponse, error)) (StatusRespons // result expired? if res.Timestamp.Add(v.expiry).Before(time.Now()) { // start refresh - if v.refreshId == "" { - v.refreshId, err = v.deepRefresh() - if err != nil { + if v.refreshTime.IsZero() { + if err = v.deepRefresh(); err != nil { return res, err } @@ -69,7 +67,7 @@ func (v *Provider) status(statusG func() (StatusResponse, error)) (StatusRespons // wait for refresh if time.Since(v.refreshTime) > refreshTimeout { - v.refreshId = "" + v.refreshTime = time.Time{} return res, api.ErrTimeout } @@ -77,7 +75,7 @@ func (v *Provider) status(statusG func() (StatusResponse, error)) (StatusRespons } // refresh done - v.refreshId = "" + v.refreshTime = time.Time{} } return res, err diff --git a/vehicle/nissan/provider.go b/vehicle/nissan/provider.go index 618b65cf8..9f8677971 100644 --- a/vehicle/nissan/provider.go +++ b/vehicle/nissan/provider.go @@ -1,7 +1,6 @@ package nissan import ( - "errors" "fmt" "time" @@ -14,7 +13,6 @@ type Provider struct { statusG func() (interface{}, error) action func(value Action) error expiry time.Duration - refreshID string refreshTime time.Time } @@ -47,23 +45,16 @@ func (v *Provider) status(battery func() (Response, error), refresh func() (Resp // return the current value if time.Since(ts) <= v.expiry { - v.refreshID = "" + v.refreshTime = time.Time{} return res, err } } // request a refresh, irrespective of a previous error - if v.refreshID == "" { - var refreshRes Response - if refreshRes, err = refresh(); err == nil { - err = api.ErrMustRetry - - v.refreshID = refreshRes.Data.ID + if v.refreshTime.IsZero() { + if _, err = refresh(); err == nil { v.refreshTime = time.Now() - - if v.refreshID == "" { - err = errors.New("refresh failed") - } + err = api.ErrMustRetry } return res, err @@ -71,7 +62,7 @@ func (v *Provider) status(battery func() (Response, error), refresh func() (Resp // refresh finally expired if time.Since(v.refreshTime) > refreshTimeout { - v.refreshID = "" + v.refreshTime = time.Time{} if err == nil { err = api.ErrTimeout }