|
|
@ -9,30 +9,25 @@ import ( |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func noDevice(ctx context.Context, devices []tesla.Device) (d tesla.Device, passcode string, err error) { |
|
|
|
|
|
|
|
return tesla.Device{}, "", nil |
|
|
|
|
|
|
|
} |
|
|
|
func login(ctx context.Context, username string, password string) (string, error) { |
|
|
|
func login(ctx context.Context, username string, password string) (string, error) { |
|
|
|
defer log.PanicSafe() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
log.LogDebug("Creating client for %+v", username) |
|
|
|
|
|
|
|
client, err := tesla.NewClient( |
|
|
|
client, err := tesla.NewClient( |
|
|
|
ctx, |
|
|
|
ctx, |
|
|
|
tesla.WithToken(&oauth2.Token{ |
|
|
|
tesla.WithMFAHandler(noDevice), |
|
|
|
AccessToken: username, |
|
|
|
|
|
|
|
RefreshToken: password, |
|
|
|
|
|
|
|
}), |
|
|
|
|
|
|
|
tesla.WithCredentials(username, password), |
|
|
|
tesla.WithCredentials(username, password), |
|
|
|
) |
|
|
|
) |
|
|
|
log.LogDebug("Created client for %+v", username) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
log.LogErrorType(err) |
|
|
|
log.LogErrorType(err) |
|
|
|
return "", err |
|
|
|
return "", err |
|
|
|
} |
|
|
|
} |
|
|
|
log.LogDebug("Creating token for %+v", username) |
|
|
|
|
|
|
|
t, err := client.Token() |
|
|
|
t, err := client.Token() |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
log.LogErrorType(err) |
|
|
|
log.LogErrorType(err) |
|
|
|
return "", err |
|
|
|
return "", err |
|
|
|
} |
|
|
|
} |
|
|
|
log.LogDebug("Created token for %+v", username) |
|
|
|
|
|
|
|
ret, err := json.Marshal(t) |
|
|
|
ret, err := json.Marshal(t) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
log.LogErrorType(err) |
|
|
|
log.LogErrorType(err) |
|
|
|