From 2542993b9fba73056af9fbc7849d31b641d9168a Mon Sep 17 00:00:00 2001 From: Alex Savin Date: Sat, 31 May 2025 21:15:04 -0400 Subject: [PATCH] More changes --- client.go | 29 ++++++++++++++++++----------- mysubaru.go | 4 ++++ vehicle.go | 13 +++++++++---- 3 files changed, 31 insertions(+), 15 deletions(-) diff --git a/client.go b/client.go index c990ff3..e2cf5ee 100644 --- a/client.go +++ b/client.go @@ -275,16 +275,26 @@ func (c *Client) SelectVehicle(vin string) VehicleData { "_": timestamp()} reqURL := MOBILE_API_VERSION + apiURLs["API_SELECT_VEHICLE"] resp := c.execute(reqURL, GET, params, "", false) + c.logger.Debug("http request output", "request", "SelectVehicle", "body", resp) - var vData VehicleData - respParsed, err := gabs.ParseJSON([]byte(resp)) + var r Response + err := json.Unmarshal(resp, &r) if err != nil { - panic(err) + c.logger.Error("error while parsing json", "request", "SelectVehicle", "error", err.Error()) } - c.logger.Debug("http request output", "request", "SelectVehicle", "body", respParsed) - vdString := respParsed.Path("data").String() - json.Unmarshal([]byte(vdString), &vData) + if r.Success { + var vd VehicleData + err = json.Unmarshal(r.Data, &vd) + if err != nil { + c.logger.Error("error while parsing json", "request", "GetClimatePresets", "error", err.Error()) + } + c.logger.Debug("http request output", "request", "GetVehicleStatus", "body", resp) + + return vd + } else { + return VehicleData{} + } // resp := c.execute(reqURL, GET, params, "", false) // logger.Debugf("SELECT VEHICLE OUTPUT >> %v\n", string([]byte(resp))) @@ -309,7 +319,6 @@ func (c *Client) SelectVehicle(vin string) VehicleData { // # Something else is probably wrong with the backend server context - try resetting // self.reset_session() // raise SubaruException("Failed to switch vehicle %s - resetting session." % js_resp.get("errorCode")) - return vData } // GetVehicles . @@ -321,8 +330,9 @@ func (c *Client) GetVehicles() []*Vehicle { "_": timestamp()} reqURL := MOBILE_API_VERSION + apiURLs["API_SELECT_VEHICLE"] resp := c.execute(reqURL, GET, params, "", false) + c.logger.Debug("http request output", "request", "GetVehicles", "body", resp) - respParsed, err := gabs.ParseJSON([]byte(resp)) + respParsed, err := gabs.ParseJSON(resp) if err != nil { c.logger.Error("error while parsing json", "request", "GetVehicles", "error", err.Error()) } @@ -333,9 +343,6 @@ func (c *Client) GetVehicles() []*Vehicle { json.Unmarshal([]byte(vdString), &vData) - // fmt.Printf("VEHICLE STRING: %+v\n\n", vdString) - // fmt.Printf("VEHICLE DATA: %+v\n\n", vData) - vehicle := &Vehicle{ Vin: vin, CarName: vData.VehicleName, diff --git a/mysubaru.go b/mysubaru.go index 3c1dfd0..36c044e 100644 --- a/mysubaru.go +++ b/mysubaru.go @@ -285,6 +285,10 @@ type ErrorResponse struct { // startConfiguration: [ START_CLIMATE_CONTROL_ONLY_ALLOW_KEY_IN_IGNITION | START_ENGINE_ALLOW_KEY_IN_IGNITION ] // runTimeMinutes: [ 10 ] +type VehicleHealth struct { + VehicleHealthItems []VehicleHealthItem `json:"vehicleHealthItems"` + LastUpdatedDate int64 `json:"lastUpdatedDate"` +} type VehicleHealthItem struct { B2cCode string `json:"b2cCode"` FeatureCode string `json:"featureCode"` diff --git a/vehicle.go b/vehicle.go index 6806fa7..940d2a0 100644 --- a/vehicle.go +++ b/vehicle.go @@ -8,8 +8,6 @@ import ( "strconv" "strings" "time" - - "github.com/Jeffail/gabs/v2" ) var parts = map[string]map[string][]string{ @@ -961,12 +959,19 @@ func (v *Vehicle) GetVehicleHealth() { } if r.Success { - _, err := gabs.ParseJSON(resp) + var vh VehicleHealth + err = json.Unmarshal(r.Data, &vh) if err != nil { v.client.logger.Error("error while parsing json", "request", "GetVehicleHealth", "error", err.Error()) } - // TODO: + v.client.logger.Debug("http request output", "request", "GetVehicleHealth", "body", resp) + + // TODO: Loop over all the Vehicle Health Items + + } else { + v.client.logger.Error("active STARLINK Security Plus subscription required") } + } // // GetClimateSettings .