From c2128f278eaf7914b241e0f576b6c4a458f5085e Mon Sep 17 00:00:00 2001 From: Alex Savin Date: Tue, 3 Jun 2025 10:41:45 -0400 Subject: [PATCH] More changes --- client.go | 54 ++++-------------------------------------------------- vehicle.go | 23 ++++++++++++++--------- 2 files changed, 18 insertions(+), 59 deletions(-) diff --git a/client.go b/client.go index 1dcbe75..0a9c115 100644 --- a/client.go +++ b/client.go @@ -101,7 +101,6 @@ func New(config *config.Config) (*Client, error) { // SelectVehicle . func (c *Client) SelectVehicle(vin string) VehicleData { - // API > json > dataName > vehicle if vin == "" { vin = c.currentVin } @@ -119,9 +118,9 @@ func (c *Client) SelectVehicle(vin string) VehicleData { 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.Error("error while parsing json", "request", "SelectVehicle", "error", err.Error()) } - // c.logger.Debug("http request output", "request", "GetVehicleStatus", "body", resp) + // c.logger.Debug("http request output", "request", "SelectVehicle", "body", resp) return vd } else { @@ -233,7 +232,7 @@ func (c *Client) GetVehicleByVIN(vin string) *Vehicle { // func fetch() {} // Exec method executes a Client instance with the API URL -func (c *Client) execute(requestUrl string, method string, params map[string]string, pollingUrl string, j bool) []byte { +func (c *Client) execute(requestUrl string, method string, params map[string]string, pollingUrl string, j bool, attempts ...int) []byte { defer timeTrack("[TIMETRK] Executing Get Request") var resp *resty.Response @@ -292,53 +291,9 @@ func (c *Client) execute(requestUrl string, method string, params map[string]str default: time.Sleep(5 * time.Second) c.logger.Debug("Subaru API reports remote service request (stopping) is in progress") - c.execute(pollingUrl, GET, map[string]string{"serviceRequestId": sr.ServiceRequestID}, pollingUrl, false) + c.execute(pollingUrl, GET, map[string]string{"serviceRequestId": sr.ServiceRequestID}, pollingUrl, false, 1) } } - - // if pollingUrl != "" { - // time.Sleep(3 * time.Second) - // attempts := 20 - - // poolingLoop: - // for attempts > 0 { - // resp, _ = c.httpClient. - // R(). - // SetQueryParams(map[string]string{ - // "serviceRequestId": sr.ServiceRequestID, - // }). - // Get(pollingUrl) - // resBytes, _ := io.ReadAll(resp.Body) - // c.logger.Debug("POLLING HTTP OUTPUT", "body", string(resBytes)) - - // var r Response - // err := json.Unmarshal(resBytes, &r) - // if err != nil { - // c.logger.Error("error while parsing json", "request", "HTTP POLLING", "error", err.Error()) - // } - // c.logger.Debug("parsed loop http request output", "request", "HTTP POLLING", "data", r.Data) - - // if r.Success { - // var sr ServiceRequest - // err := json.Unmarshal(r.Data, &sr) - // if err != nil { - // c.logger.Error("error while parsing json", "request", "HTTP POLLING", "error", err.Error()) - // } - // switch { - // case sr.RemoteServiceState == "finished": - // c.logger.Debug("Remote service request completed successfully", "request id", sr.ServiceRequestID) - // break poolingLoop - // case sr.RemoteServiceState == "started": - // c.logger.Debug("Subaru API reports remote service request is in progress", "request id", sr.ServiceRequestID) - // } - // } else { - // c.logger.Debug("Backend session expired, please try again") - // break poolingLoop - // } - // attempts-- - // time.Sleep(3 * time.Second) - // } - // } } } else { c.logger.Error("request is not successfull", "request", "execute", "method", method, "url", requestUrl, "error", err.Error()) @@ -400,7 +355,6 @@ func (c *Client) parseResponse(b []byte) (Response, bool) { if err != nil { c.logger.Error("error while parsing json", "error", err.Error()) } - return r, true } diff --git a/vehicle.go b/vehicle.go index 067711a..384099f 100644 --- a/vehicle.go +++ b/vehicle.go @@ -501,7 +501,7 @@ func (v *Vehicle) GetClimateQuickPresets() { var r Response err := json.Unmarshal(resp, &r) if err != nil { - v.client.logger.Error("error while parsing json", "request", "GetClimatePresets", "error", err.Error()) + v.client.logger.Error("error while parsing json", "request", "GetClimateQuickPresets", "error", err.Error()) } re1 := regexp.MustCompile(`\"`) @@ -536,7 +536,7 @@ func (v *Vehicle) GetClimateUserPresets() { var r Response err := json.Unmarshal(resp, &r) if err != nil { - v.client.logger.Error("error while parsing json", "request", "GetClimatePresets", "error", err.Error()) + v.client.logger.Error("error while parsing json", "request", "GetClimateUserPresets", "error", err.Error()) } re1 := regexp.MustCompile(`\"`) @@ -547,7 +547,7 @@ func (v *Vehicle) GetClimateUserPresets() { var cProfiles []ClimateProfile err = json.Unmarshal([]byte(result), &cProfiles) if err != nil { - v.client.logger.Error("error while parsing json", "request", "GetClimatePresets", "error", err.Error()) + v.client.logger.Error("error while parsing json", "request", "GetClimateUserPresets", "error", err.Error()) } if len(cProfiles) > 0 { @@ -563,7 +563,7 @@ func (v *Vehicle) GetClimateUserPresets() { } } } else { - v.client.logger.Debug("didn't find any climate quick presets") + v.client.logger.Debug("didn't find any user climate presets") } v.Updated = time.Now() } else { @@ -582,7 +582,7 @@ func (v *Vehicle) GetVehicleStatus() { var vs VehicleStatus err := json.Unmarshal(r.Data, &vs) if err != nil { - v.client.logger.Error("error while parsing json", "request", "GetClimatePresets", "error", err.Error()) + v.client.logger.Error("error while parsing json", "request", "GetVehicleStatus", "error", err.Error()) } // v.client.logger.Debug("http request output", "request", "GetVehicleStatus", "body", vs) @@ -753,16 +753,16 @@ func (v *Vehicle) GetVehicleCondition() { var sr ServiceRequest err := json.Unmarshal(r.Data, &sr) if err != nil { - v.client.logger.Error("error while parsing json", "request", "GetClimatePresets", "error", err.Error()) + v.client.logger.Error("error while parsing json", "request", "GetVehicleCondition", "error", err.Error()) } - // v.client.logger.Debug("http request output", "request", "GetVehicleStatus", "body", resp) + // v.client.logger.Debug("http request output", "request", "GetVehicleCondition", "body", resp) var vc VehicleCondition err = json.Unmarshal(sr.Result, &vc) if err != nil { - v.client.logger.Error("error while parsing json", "request", "GetClimatePresets", "error", err.Error()) + v.client.logger.Error("error while parsing json", "request", "GetVehicleCondition", "error", err.Error()) } - // v.client.logger.Debug("http request output", "request", "GetVehicleStatus", "body", resp) + // v.client.logger.Debug("http request output", "request", "GetVehicleCondition", "body", resp) val := reflect.ValueOf(vc) typeOfS := val.Type() @@ -927,6 +927,11 @@ func (v *Vehicle) GetVehicleHealth() { } v.client.logger.Debug("http request output", "request", "GetVehicleHealth", "vehicle health", vh) // TODO: Loop over all the Vehicle Health Items + for i, vhi := range vh.VehicleHealthItems { + v.client.logger.Debug("vehicle health item", "id", i, "item", vhi) + if vhi.IsTrouble { + } + } } else { v.client.logger.Error("active STARLINK Security Plus subscription required") }