fix #41 improve token expiry
This commit is contained in:
@ -98,12 +98,22 @@ export abstract class OauthPlaylistAdder {
|
|||||||
protected async shouldRefreshToken(): Promise<{ token: OauthResponse; refresh: boolean } | null> {
|
protected async shouldRefreshToken(): Promise<{ token: OauthResponse; refresh: boolean } | null> {
|
||||||
const token = await this.auth();
|
const token = await this.auth();
|
||||||
if (token == null || !token?.expires) {
|
if (token == null || !token?.expires) {
|
||||||
|
this.logger.warn('Cannot check if token should be refreshed. Token expiry is unreadablle');
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
let refreshAt = new Date();
|
if (token.error) {
|
||||||
|
this.logger.error('Access token is invalid, should refresh');
|
||||||
|
return {
|
||||||
|
token: token,
|
||||||
|
refresh: true
|
||||||
|
};
|
||||||
|
}
|
||||||
|
let refreshAt = new Date(token.expires);
|
||||||
|
// Refresh token this.refresh_time minutes before it expires
|
||||||
refreshAt.setTime(refreshAt.getTime() - this.refresh_time * 60 * 1000);
|
refreshAt.setTime(refreshAt.getTime() - this.refresh_time * 60 * 1000);
|
||||||
this.logger.info('token expiry', token.expires, 'vs refresh @', refreshAt);
|
|
||||||
if (token.expires.getTime() > refreshAt.getTime()) {
|
this.logger.info('refresh @', refreshAt, 'token expires', token.expires);
|
||||||
|
if (refreshAt.getTime() > new Date().getTime()) {
|
||||||
return {
|
return {
|
||||||
token: token,
|
token: token,
|
||||||
refresh: false
|
refresh: false
|
||||||
@ -114,7 +124,7 @@ export abstract class OauthPlaylistAdder {
|
|||||||
'Token expires',
|
'Token expires',
|
||||||
token.expires,
|
token.expires,
|
||||||
token.expires.getTime(),
|
token.expires.getTime(),
|
||||||
`which is after the refresh time`,
|
`so it should be refreshed before or at`,
|
||||||
refreshAt,
|
refreshAt,
|
||||||
refreshAt.getTime()
|
refreshAt.getTime()
|
||||||
);
|
);
|
||||||
|
@ -78,7 +78,9 @@ export class YoutubePlaylistAdder extends OauthPlaylistAdder implements Playlist
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async addToPlaylist(song: SongInfo) {}
|
public async addToPlaylist(song: SongInfo) {
|
||||||
|
await this.addToPlaylistRetry(song);
|
||||||
|
}
|
||||||
|
|
||||||
private async addToPlaylistRetry(song: SongInfo, remaning: number = 3) {
|
private async addToPlaylistRetry(song: SongInfo, remaning: number = 3) {
|
||||||
if (remaning < 0) {
|
if (remaning < 0) {
|
||||||
|
Reference in New Issue
Block a user