This commit is contained in:
@@ -2,12 +2,17 @@ import type { AccessTokenMaybeWithUserId, AccessTokenWithUserId, AuthProvider }
|
||||
import type { UserIdResolvable } from "@twurple/api"
|
||||
import * as TwitchAuth from "./TwitchAuth";
|
||||
|
||||
async function getTwurpleProxy(token: TwitchAuth.TwitchToken): Promise<AccessTokenWithUserId> {
|
||||
async function ensureUserId(token: TwitchAuth.TwitchToken): Promise<TwitchAuth.TwitchToken> {
|
||||
if (!token.user_id) {
|
||||
const refresh_token=token.refresh_token
|
||||
const refresh_token = token.refresh_token
|
||||
token = await TwitchAuth.validateToken(token.access_token)
|
||||
token.refresh_token=refresh_token
|
||||
token.refresh_token = refresh_token
|
||||
}
|
||||
return token
|
||||
}
|
||||
|
||||
async function getTwurpleProxy(token: TwitchAuth.TwitchToken): Promise<AccessTokenWithUserId> {
|
||||
token=await ensureUserId(token)
|
||||
return new Proxy(token, {
|
||||
get(target, name, receiver) {
|
||||
return target[name.toString().replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`) as keyof TwitchAuth.TwitchToken]
|
||||
@@ -21,7 +26,8 @@ export class SugoiAuthProvider implements AuthProvider {
|
||||
constructor(clientId:string,proxyOrigin?:string) {
|
||||
this.clientId = clientId;
|
||||
if (proxyOrigin) TwitchAuth.setProxyOrigin(proxyOrigin);
|
||||
this.#token=TwitchAuth.getUserTokenPassive(clientId).catch()
|
||||
this.#token = TwitchAuth.getUserTokenPassive(clientId)
|
||||
if(!this.#token) this.#token=ensureUserId(this.#token)
|
||||
}
|
||||
#authorize(scopes: string[]) {
|
||||
const promise = TwitchAuth.requestAuthCode(this.clientId, ...scopes)
|
||||
@@ -61,8 +67,8 @@ export class SugoiAuthProvider implements AuthProvider {
|
||||
const token=await this.#token
|
||||
if (!token) throw new Error("unauthorized")
|
||||
if (!token.refresh_token) throw new Error("missing refresh token")
|
||||
this.#token = await TwitchAuth.refreshToken(this.clientId, token.refresh_token)
|
||||
return getTwurpleProxy(this.#token)
|
||||
this.#token = await TwitchAuth.refreshToken(this.clientId, token.refresh_token).then(ensureUserId)
|
||||
return getTwurpleProxy(this.#token!)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user