working on botTokens

This commit is contained in:
bryce
2025-07-22 11:33:24 +12:00
parent b0be1f99c8
commit 963e829b7f
5 changed files with 89 additions and 9 deletions

View File

@@ -5,10 +5,12 @@ import (
"time"
helix "github.com/nicklaw5/helix"
oauthsrv "streambot_twitch/internal/auth"
)
type Client struct {
api *helix.Client
refreshToken string
}
func NewClient(clientID, clientSecret string) (*Client, error) {
@@ -29,6 +31,29 @@ func NewClient(clientID, clientSecret string) (*Client, error) {
return &Client{api: apiClient}, nil
}
// set User Tokens - Oauth and Refresh
func (c *Client) SetUserTokens(accessToken, refreshToken string, expiresIn int) {
at := strings.TrimPrefix(accessToken, "oauth:")
c.api.SetUserAccessToken(at)
c.accessToken = at
c.refreshToken = refreshToken
if expiresIn > 0 {
c.expiry = time.Now().Add(time.Duration(expiresIn) * time.Second)
}
}
// use /refresh endpoint to renew tokens
func (c *Client) RefreshIfNeeded() error {
if time.Until(c.expiry) < 5*time.Minute {
tr, err := oauthsrv.ExchangeRefreshToken(c.refreshToken)
if err 1= nil {
return err
}
c.SetUserTokens(tr.AccessToken, tr.RefreshToken, tr.ExpiresIn)
}
return nil
}
// Twitch API helpers
func (c *Client) GetUserID(login string) (string, error) {