Fix token refresh for Porsche vehicles (#1849)
This commit is contained in:
parent
7901556349
commit
bfb1694abf
1 changed files with 17 additions and 10 deletions
|
|
@ -46,23 +46,30 @@ func NewProvider(log *util.Logger, identity *Identity, accessTokens AccessTokens
|
|||
}
|
||||
|
||||
func (v *Provider) request(emobility bool, uri string) (*http.Request, error) {
|
||||
token := v.accessTokens.Token
|
||||
apiKey := ClientID
|
||||
if emobility {
|
||||
token = v.accessTokens.EmobilityToken
|
||||
apiKey = EmobilityClientID
|
||||
}
|
||||
defaultToken := v.accessTokens.Token
|
||||
emobilityToken := v.accessTokens.EmobilityToken
|
||||
|
||||
if token.AccessToken == "" || time.Since(token.Expiry) > 0 {
|
||||
accessTokens, err := v.identity.Login()
|
||||
// if any of the two Tokens are empty or expired, login again
|
||||
if defaultToken.AccessToken == "" ||
|
||||
time.Since(defaultToken.Expiry) > 0 ||
|
||||
emobilityToken.AccessToken == "" ||
|
||||
time.Since(emobilityToken.Expiry) > 0 {
|
||||
newAccessTokens, err := v.identity.Login()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
v.accessTokens = accessTokens
|
||||
v.accessTokens = newAccessTokens
|
||||
}
|
||||
|
||||
apiKey := ClientID
|
||||
apiAccessToken := v.accessTokens.Token.AccessToken
|
||||
if emobility {
|
||||
apiKey = EmobilityClientID
|
||||
apiAccessToken = v.accessTokens.EmobilityToken.AccessToken
|
||||
}
|
||||
|
||||
req, err := request.New(http.MethodGet, uri, nil, map[string]string{
|
||||
"Authorization": fmt.Sprintf("Bearer %s", token.AccessToken),
|
||||
"Authorization": fmt.Sprintf("Bearer %s", apiAccessToken),
|
||||
"apikey": apiKey,
|
||||
})
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue