From 2f3840e01be91e6f29fcd68161bcb3abec21fd5c Mon Sep 17 00:00:00 2001 From: Alex Savin Date: Thu, 29 May 2025 14:11:56 -0400 Subject: [PATCH] Testing Climate Quick Presets parsing --- client.go | 1 + vehicle.go | 32 ++++++++++++++++++++------------ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/client.go b/client.go index 97689f9..f97ef63 100644 --- a/client.go +++ b/client.go @@ -358,6 +358,7 @@ func (c *Client) GetVehicles() []*Vehicle { vehicle.GetVehicleCondition() vehicle.GetClimatePresets() vehicle.GetClimateUserPresets() + vehicle.GetClimateQuickPresets() vehicles = append(vehicles, vehicle) } diff --git a/vehicle.go b/vehicle.go index 66219a1..bdc29ac 100644 --- a/vehicle.go +++ b/vehicle.go @@ -438,25 +438,33 @@ func (v *Vehicle) GetClimateQuickPresets() { respParsed, err := gabs.ParseJSON(resp) if err != nil { - v.client.logger.Error("error while parsing json", "request", "GetClimateQuickPresets", "error", err.Error()) + v.client.logger.Error("error while parsing http output json", "request", "GetClimateQuickPresets", "error", err.Error()) } v.client.logger.Debug("CLIMATE SETTINGS OUTPUT", "body", respParsed) // ONLY FOR THAT REQUEST BECAUSE OF API SENDS BACK ESCAPING DATA IN DATA FIELD data, ok := respParsed.Path("data").Data().(string) - - // rawIn := json.RawMessage(in) - // bytes, err := rawIn.MarshalJSON() - // if err != nil { - // panic(err) - // } - - // value == string, ok == false if !ok { - // TODO: Work with errorCode - panic(data) + v.client.logger.Error("error while parsing data json", "request", "GetClimateQuickPresets", "error", err.Error()) + } + + cProfiles := []ClimateProfile{} + err = json.Unmarshal([]byte(data), &cProfiles) + v.client.logger.Debug("climate quick presets", "data", data) + + if err != nil { + v.client.logger.Error("error while parsing climate quick presets json", "request", "GetClimateQuickPresets", "error", err.Error()) + } + + if len(cProfiles) > 0 { + for _, cp := range cProfiles { + if _, ok := v.ClimateProfiles[cp.PresetType+cp.Name]; ok { + v.ClimateProfiles[cp.PresetType+cp.Name] = cp + } else { + v.ClimateProfiles[cp.PresetType+cp.Name] = cp + } + } } - v.client.logger.Debug("PRESETS", "output", data) } else { v.client.logger.Error("active STARLINK Security Plus subscription required") }