Remove refreshId
This commit is contained in:
parent
b52a750237
commit
94205af4bc
2 changed files with 11 additions and 22 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue