Made the url used to check the token a config option
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Dreaded_X 2022-11-22 03:33:00 +01:00
parent 501775654f
commit 6f5b3d13f7
Signed by: Dreaded_X
GPG Key ID: 76BDEC4E165D8AD9
5 changed files with 14 additions and 9 deletions

View File

@ -43,6 +43,7 @@ type config struct {
Google struct { Google struct {
Username string `yaml:"username" envconfig:"GOOGLE_USERNAME"` Username string `yaml:"username" envconfig:"GOOGLE_USERNAME"`
OAuthUrl string `yaml:"oauth_url" envconfig:"GOOGLE_OAUTH_URL"`
Credentials Credentials `yaml:"credentials" envconfig:"GOOGLE_CREDENTIALS"` Credentials Credentials `yaml:"credentials" envconfig:"GOOGLE_CREDENTIALS"`
} `yaml:"google"` } `yaml:"google"`
} }

View File

@ -19,7 +19,7 @@ type Home struct {
} }
// Auto populate and update the device list // Auto populate and update the device list
func New(username string, credentials config.Credentials) *Home { func New(username string, credentials config.Credentials, oauthUrl string) *Home {
home := &Home{Username: username, Devices: make(map[device.InternalName]device.Basic)} home := &Home{Username: username, Devices: make(map[device.InternalName]device.Basic)}
homegraphService, err := homegraph.NewService(context.Background(), option.WithCredentialsJSON(credentials)) homegraphService, err := homegraph.NewService(context.Background(), option.WithCredentialsJSON(credentials))
@ -27,7 +27,7 @@ func New(username string, credentials config.Credentials) *Home {
panic(err) panic(err)
} }
home.Service = google.NewService(home, homegraphService) home.Service = google.NewService(home, homegraphService, oauthUrl)
return home return home
} }

View File

@ -3,6 +3,7 @@ package google
import ( import (
"automation/device" "automation/device"
"encoding/json" "encoding/json"
"fmt"
"io" "io"
"log" "log"
"net/http" "net/http"
@ -66,7 +67,7 @@ func (s *Service) getUser(authorization string) (string, int) {
return cached.Value(), http.StatusOK return cached.Value(), http.StatusOK
} }
req, err := http.NewRequest("GET", "https://login.huizinga.dev/api/oidc/userinfo", nil) req, err := http.NewRequest("GET", fmt.Sprintf("%s/userinfo", s.oauthUrl), nil)
if err != nil { if err != nil {
log.Println("Failed to make request to to login server") log.Println("Failed to make request to to login server")
return "", http.StatusInternalServerError return "", http.StatusInternalServerError

View File

@ -32,13 +32,16 @@ type Provider interface {
type Service struct { type Service struct {
provider Provider provider Provider
deviceService *homegraph.DevicesService deviceService *homegraph.DevicesService
oauthUrl string
cache *ttlcache.Cache[string, string] cache *ttlcache.Cache[string, string]
} }
func NewService(provider Provider, service *homegraph.Service) *Service { func NewService(provider Provider, service *homegraph.Service, oauthUrl string) *Service {
s := Service{ s := Service{
provider: provider, provider: provider,
deviceService: homegraph.NewDevicesService(service), deviceService: homegraph.NewDevicesService(service),
oauthUrl: oauthUrl,
cache: ttlcache.New( cache: ttlcache.New(
ttlcache.WithTTL[string, string](30 * time.Minute), ttlcache.WithTTL[string, string](30 * time.Minute),
), ),

View File

@ -29,7 +29,7 @@ func main() {
notify := ntfy.New(cfg.Ntfy.Topic) notify := ntfy.New(cfg.Ntfy.Topic)
hue := hue.New(cfg.Hue.IP, cfg.Hue.Token) hue := hue.New(cfg.Hue.IP, cfg.Hue.Token)
home := home.New(cfg.Google.Username, cfg.Google.Credentials) home := home.New(cfg.Google.Username, cfg.Google.Credentials, cfg.Google.OAuthUrl)
r := mux.NewRouter() r := mux.NewRouter()
r.HandleFunc("/assistant", home.Service.FullfillmentHandler) r.HandleFunc("/assistant", home.Service.FullfillmentHandler)