package main import ( "context" "encoding/json" "github.com/bogosj/tesla" "golang.org/x/oauth2" ) var mfaCode string func noDevice(ctx context.Context, devices []tesla.Device) (d tesla.Device, passcode string, err error) { return devices[0], mfaCode, nil } func login(ctx context.Context, username string, password string, tok string) (string, error) { var client *tesla.Client var err error if username == "" { client, err = tesla.NewClient( ctx, tesla.WithToken(&oauth2.Token{ RefreshToken: tok, }), ) } else { mfaCode = tok client, err = tesla.NewClient( ctx, tesla.WithMFAHandler(noDevice), tesla.WithCredentials(username, password), ) } if err != nil { log.LogErrorType(err) return "", err } t, err := client.Token() if err != nil { log.LogErrorType(err) return "", err } ret, err := json.Marshal(t) if err != nil { log.LogErrorType(err) return "", err } return string(ret), nil }