From c70ef769a987df1e203324a17a5e9e11325ae1fb Mon Sep 17 00:00:00 2001 From: andig Date: Thu, 17 Mar 2022 13:26:56 +0100 Subject: [PATCH] Add sandbox config for testing purposes --- vehicle/mercedes.go | 3 ++- vehicle/mercedes/api.go | 23 ++++++++++++++++------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/vehicle/mercedes.go b/vehicle/mercedes.go index c34454576..1c3db1f03 100644 --- a/vehicle/mercedes.go +++ b/vehicle/mercedes.go @@ -27,6 +27,7 @@ func NewMercedesFromConfig(other map[string]interface{}) (api.Vehicle, error) { embed `mapstructure:",squash"` ClientID, ClientSecret string VIN string + Sandbox bool Cache time.Duration }{ Cache: interval, @@ -60,7 +61,7 @@ func NewMercedesFromConfig(other map[string]interface{}) (api.Vehicle, error) { return nil, err } - api := mercedes.NewAPI(log, identity) + api := mercedes.NewAPI(log, identity, cc.Sandbox) v := &Mercedes{ embed: &cc.embed, diff --git a/vehicle/mercedes/api.go b/vehicle/mercedes/api.go index b0c28eb7a..5cd850e8c 100644 --- a/vehicle/mercedes/api.go +++ b/vehicle/mercedes/api.go @@ -8,18 +8,20 @@ import ( "golang.org/x/oauth2" ) -// const BaseURI = "https://api.mercedes-benz.com/vehicledata_tryout/v2" - -// BaseURI is the Mercedes api base URI -const BaseURI = "https://api.mercedes-benz.com/vehicledata/v2" +const ( + // BaseURI is the Mercedes api base URI + BaseURI = "https://api.mercedes-benz.com/vehicledata/v2" + SandboxBaseURI = "https://api.mercedes-benz.com/vehicledata_tryout/v2" +) // API is the Mercedes api client type API struct { *request.Helper + sandbox bool } // NewAPI creates a new api client -func NewAPI(log *util.Logger, identity *Identity) *API { +func NewAPI(log *util.Logger, identity *Identity, sandbox bool) *API { v := &API{ Helper: request.NewHelper(log), } @@ -33,11 +35,18 @@ func NewAPI(log *util.Logger, identity *Identity) *API { return v } +func (v *API) BaseURI() string { + if v.sandbox { + return SandboxBaseURI + } + return BaseURI +} + // SoC implements the /soc response func (v *API) SoC(vin string) (EVResponse, error) { var res EVResponse - uri := fmt.Sprintf("%s/vehicles/%s/resources/soc", BaseURI, vin) + uri := fmt.Sprintf("%s/vehicles/%s/resources/soc", v.BaseURI(), vin) err := v.GetJSON(uri, &res) return res, err @@ -47,7 +56,7 @@ func (v *API) SoC(vin string) (EVResponse, error) { func (v *API) Range(vin string) (EVResponse, error) { var res EVResponse - uri := fmt.Sprintf("%s/vehicles/%s/resources/rangeelectric", BaseURI, vin) + uri := fmt.Sprintf("%s/vehicles/%s/resources/rangeelectric", v.BaseURI(), vin) err := v.GetJSON(uri, &res) return res, err