mirror of
https://github.com/Luzifer/twitch-bot.git
synced 2024-11-09 16:50:01 +00:00
34 lines
952 B
Go
34 lines
952 B
Go
|
package twitch
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"net/http"
|
||
|
"time"
|
||
|
|
||
|
"github.com/pkg/errors"
|
||
|
)
|
||
|
|
||
|
// GetTokenInfo requests a validation for the token set within the
|
||
|
// client and returns the authorized user, their granted scopes on this
|
||
|
// token and an error in case something went wrong.
|
||
|
func (c *Client) GetTokenInfo(ctx context.Context) (user string, scopes []string, expiresAt time.Time, err error) {
|
||
|
var payload OAuthTokenValidationResponse
|
||
|
|
||
|
if c.accessToken == "" {
|
||
|
return "", nil, time.Time{}, errors.New("no access token present")
|
||
|
}
|
||
|
|
||
|
if err := c.Request(ClientRequestOpts{
|
||
|
AuthType: AuthTypeBearerToken,
|
||
|
Context: ctx,
|
||
|
Method: http.MethodGet,
|
||
|
OKStatus: http.StatusOK,
|
||
|
Out: &payload,
|
||
|
URL: "https://id.twitch.tv/oauth2/validate",
|
||
|
}); err != nil {
|
||
|
return "", nil, time.Time{}, errors.Wrap(err, "validating token")
|
||
|
}
|
||
|
|
||
|
return payload.Login, payload.Scopes, time.Now().Add(time.Duration(payload.ExpiresIn) * time.Second), nil
|
||
|
}
|