working on botTokens
This commit is contained in:
@@ -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) {
|
||||
|
Reference in New Issue
Block a user