Fix all of my non-functional auth refresh code

This commit is contained in:
Oliver-Akins 2022-10-13 00:24:41 -06:00
parent dbd8a486ae
commit 6a5503c7a6

View file

@ -27,7 +27,8 @@ export class TwitchAuth {
twitchAuths[this._channel] = this;
};
if (token_data?.bid == null) {
log.silly("Channel auth doesn't contain broadcaster ID");
log.warn("Channel auth doesn't contain broadcaster ID");
this.getChannel();
} else {
this._bid = token_data.bid;
};
@ -39,6 +40,7 @@ export class TwitchAuth {
log.debug(`Requesting user info`)
let r = await this.request<any>("GET", "/users");
this._channel = r.data.data[0].login;
this._bid = r.data.data[0].id;
if (this._channel) {
twitchAuths[this._channel] = this;
};
@ -81,14 +83,16 @@ export class TwitchAuth {
try {
let r = await this.request<TokenData>(
"POST",
config.twitch.auth.base_url + "/token?" + encodeURIComponent(qs.toString()),
config.twitch.auth.base_url + "/token",
{ data: qs }
);
this._refresh_token = r.refresh_token;
this._token = r.access_token,
this.expires_in = r.expires_in;
this.scope = r.scope;
this.token_type = r.token_type;
} catch (err) {
} catch (err: any) {
log.debug(err.response.data)
log.error(`Could not refresh the token for ${this._channel}`)
}
};
@ -101,6 +105,7 @@ export class TwitchAuth {
expires_in: this.expires_in,
scope: this.scope,
channel: this.channel,
bid: this.bid,
};
};
@ -112,7 +117,7 @@ export class TwitchAuth {
* @param conf The Axios RequestConfig, without method, url, or baseURL
* @returns The data returned from the Twitch API
*/
public async request<T>(method: Method, url: string, conf:any={}, attempt=0): Promise<T> {
public async request<T>(method: Method, url: string, conf:any={}, refreshed=false): Promise<T> {
try {
let headers = {
@ -141,17 +146,17 @@ export class TwitchAuth {
// global error handling,
switch (err.response.status) {
case 401:
case 403:
this.refresh();
if (attempt < 3) {
this.request(method, url, conf, ++attempt);
await this.refresh();
if (!refreshed) {
log.debug(`Attempting refresh'd request`)
return this.request(method, url, conf, true);
};
break;
default:
log.error(err);
log.error(err.response.data);
};
};
log.error(err);
throw err;
};
};