Go/Qt desktop application for Tesla vehicles
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.1 KiB

package main
import (
"context"
"encoding/json"
"fmt"
"github.com/bogosj/tesla"
"golang.org/x/oauth2"
"samhofi.us/x/keybase/v2"
)
var (
k = keybase.NewKeybase()
)
func isAuthenticated() bool {
chann := fmt.Sprintf("%+v,tesla_bot", k.Username)
test, _ := k.KVGet(&chann, "teslabot", "authtok")
return test.EntryValue != ""
}
func getTeslaClient() *tesla.Client {
var t *oauth2.Token
if !isAuthenticated() {
return nil
}
chann := fmt.Sprintf("%+v,tesla_bot", k.Username)
test, _ := k.KVGet(&chann, "teslabot", "authtok")
err := json.Unmarshal([]byte(test.EntryValue), &t)
if err != nil {
return nil
}
c, err := tesla.NewClient(context.Background(), tesla.WithToken(t))
if err != nil {
return nil
}
return c
}
func getVehicle(name string) *tesla.Vehicle {
c := getTeslaClient()
if c == nil {
return nil
}
vehicles, err := c.Vehicles()
if err != nil {
return nil
}
v := vehicles[0]
if name != "" {
for _, test := range vehicles {
if name == test.Vin {
v = test
}
if name == test.DisplayName {
v = test
}
}
}
return v
}