From 9abaa2ff3b1b8d6b6700ddf587eeb6848bd68035 Mon Sep 17 00:00:00 2001 From: andig Date: Wed, 30 Mar 2022 18:00:48 +0200 Subject: [PATCH] Audi e-tron: add timeout to query --- vehicle/audi-etron.go | 7 ++++++- vehicle/audi/etron/api.go | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/vehicle/audi-etron.go b/vehicle/audi-etron.go index d418b6b34..3b16e3dbc 100644 --- a/vehicle/audi-etron.go +++ b/vehicle/audi-etron.go @@ -1,6 +1,7 @@ package vehicle import ( + "context" "time" "github.com/evcc-io/evcc/api" @@ -64,7 +65,11 @@ func NewEtronFromConfig(other map[string]interface{}) (api.Vehicle, error) { // use the etron API for list of vehicles api := etron.NewAPI(log, ats) - cc.VIN, err = ensureVehicle(cc.VIN, api.Vehicles) + cc.VIN, err = ensureVehicle(cc.VIN, func() ([]string, error) { + ctx, cancel := context.WithTimeout(context.Background(), cc.Timeout) + defer cancel() + return api.Vehicles(ctx) + }) if err == nil { api := id.NewAPI(log, its) diff --git a/vehicle/audi/etron/api.go b/vehicle/audi/etron/api.go index 30fb14268..ed5333e56 100644 --- a/vehicle/audi/etron/api.go +++ b/vehicle/audi/etron/api.go @@ -33,7 +33,7 @@ func NewAPI(log *util.Logger, ts oauth2.TokenSource) *API { } // Vehicles implements the /vehicles response -func (v *API) Vehicles() ([]string, error) { +func (v *API) Vehicles(ctx context.Context) ([]string, error) { type vehicle struct { VIN, Type, Nickname string } @@ -43,7 +43,7 @@ func (v *API) Vehicles() ([]string, error) { } var vins []string - err := v.client.Query(context.Background(), &res, nil) + err := v.client.Query(ctx, &res, nil) if err == nil { vins = funk.Map(res.UserVehicles, func(v vehicle) string { return v.VIN