Hyundai: extract login errors

This commit is contained in:
andig 2021-11-07 16:42:49 +01:00
parent e5bf2c8200
commit ebf4baa431

View file

@ -255,15 +255,19 @@ func (v *Identity) bluelinkLogin(cookieClient *request.Helper, user, password st
return "", err
}
var redirect struct {
var res struct {
RedirectURL string `json:"redirectUrl"`
ErrCode string `json:"errCode"`
ErrMsg string `json:"errMsg"`
}
var accCode string
if err = cookieClient.DoJSON(req, &redirect); err == nil {
if parsed, err := url.Parse(redirect.RedirectURL); err == nil {
if err = cookieClient.DoJSON(req, &res); err == nil {
if parsed, err := url.Parse(res.RedirectURL); err == nil {
accCode = parsed.Query().Get("code")
}
} else if res.ErrCode != "" {
err = fmt.Errorf("%w: %s (%s)", err, res.ErrMsg, res.ErrCode)
}
return accCode, err
@ -334,10 +338,6 @@ func (v *Identity) Login(user, password string) (err error) {
if code, err = v.brandLogin(cookieClient, user, password); err != nil {
code, err = v.bluelinkLogin(cookieClient, user, password)
}
if err != nil {
err = fmt.Errorf("login failed: %w", err)
}
}
if err == nil {