diff --git a/vehicle/seat-cupra.go b/vehicle/seat-cupra.go index d4bb10f45..b894e953f 100644 --- a/vehicle/seat-cupra.go +++ b/vehicle/seat-cupra.go @@ -65,12 +65,21 @@ func NewCupraFromConfig(other map[string]interface{}) (api.Vehicle, error) { api := cupra.NewAPI(log, ts) - cc.VIN, err = ensureVehicle(cc.VIN, func() ([]string, error) { - return api.Vehicles(ui.Subject) - }) + vehicle, err := ensureVehicleEx( + cc.VIN, func() ([]cupra.Vehicle, error) { + return api.Vehicles(ui.Subject) + }, + func(v cupra.Vehicle) string { + return v.VIN + }, + ) if err == nil { - v.Provider = cupra.NewProvider(api, ui.Subject, cc.VIN, cc.Cache) + v.fromVehicle(vehicle.VehicleNickname, 0) + } + + if err == nil { + v.Provider = cupra.NewProvider(api, ui.Subject, vehicle.VIN, cc.Cache) } return v, err diff --git a/vehicle/seat/cupra/api.go b/vehicle/seat/cupra/api.go index 1697cc274..2b60c1528 100644 --- a/vehicle/seat/cupra/api.go +++ b/vehicle/seat/cupra/api.go @@ -38,19 +38,15 @@ func NewAPI(log *util.Logger, ts oauth2.TokenSource) *API { } // Vehicles implements the /vehicles response -func (v *API) Vehicles(userID string) (res []string, err error) { - var vehicles struct { +func (v *API) Vehicles(userID string) ([]Vehicle, error) { + var res struct { Vehicles []Vehicle } uri := fmt.Sprintf("%s/v1/users/%s/garage/vehicles", BaseURL, userID) - err = v.GetJSON(uri, &vehicles) + err := v.GetJSON(uri, &res) - for _, v := range vehicles.Vehicles { - res = append(res, v.VIN) - } - - return res, err + return res.Vehicles, err } // Status implements the /status response