From ac45abeea8a766063b3eed8a983c02862ac0c22e Mon Sep 17 00:00:00 2001 From: andig Date: Sun, 13 Mar 2022 12:21:30 +0000 Subject: [PATCH] Fiat: improve error handling --- vehicle/fiat/identity.go | 9 ++++++--- vehicle/fiat/types.go | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/vehicle/fiat/identity.go b/vehicle/fiat/identity.go index 57e3f41a4..68cde5f78 100644 --- a/vehicle/fiat/identity.go +++ b/vehicle/fiat/identity.go @@ -70,7 +70,7 @@ func (v *Identity) Login() error { } var res struct { - ErrorCode int + ErrorInfo UID string StatusReason string SessionInfo struct { @@ -107,13 +107,14 @@ func (v *Identity) Login() error { if req, err = request.New(http.MethodPost, uri, strings.NewReader(data.Encode()), headers); err == nil { if err = v.DoJSON(req, &res); err == nil { + err = res.ErrorInfo.Error() v.uid = res.UID } } } var token struct { - ErrorCode int `json:"errorCode"` + ErrorInfo StatusReason string IDToken string `json:"id_token"` } @@ -138,7 +139,9 @@ func (v *Identity) Login() error { if req, err = request.New(http.MethodGet, uri, nil, headers); err == nil { req.URL.RawQuery = data.Encode() - err = v.DoJSON(req, &token) + if err = v.DoJSON(req, &token); err == nil { + err = token.ErrorInfo.Error() + } } } diff --git a/vehicle/fiat/types.go b/vehicle/fiat/types.go index c0e300d6b..51ad67f9b 100644 --- a/vehicle/fiat/types.go +++ b/vehicle/fiat/types.go @@ -1,10 +1,25 @@ package fiat import ( + "fmt" + "html" "strconv" "time" ) +type ErrorInfo struct { + ErrorCode int + ErrorMessage string + ErrorDetails string +} + +func (e ErrorInfo) Error() error { + if e.ErrorCode == 0 { + return nil + } + return fmt.Errorf("%s: %s", e.ErrorMessage, html.UnescapeString(e.ErrorDetails)) +} + type VehiclesResponse struct { Vehicles []Vehicle }