Skip to content

Commit

Permalink
feat: 使用token rotate
Browse files Browse the repository at this point in the history
  • Loading branch information
bangbang93 committed Apr 19, 2024
1 parent d57a159 commit ad62512
Showing 1 changed file with 22 additions and 9 deletions.
31 changes: 22 additions & 9 deletions src/token.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,18 +50,31 @@ export class TokenManager {
},
})
.json<{token: string; ttl: number}>()
setTimeout(
() => {
this.refreshToken().catch((err) => {
logger.error(err, 'refresh token error')
})
},
token.ttl - ms('10m'),
)
this.scheduleRefreshToken(token.ttl)
return token.token
}

private scheduleRefreshToken(ttl: number): void {
const next = Math.max(ttl - ms('10m'), ttl / 2)
setTimeout(() => {
this.refreshToken().catch((err) => {
logger.error(err, 'refresh token error')
})
}, next)
logger.trace(`schedule refresh token in ${next}ms`)
}

private async refreshToken(): Promise<void> {
this.token = await this.fetchToken()
const token = await this.got
.post('openbmclapi-agent/token', {
json: {
clusterId: this.clusterId,
token: this.token,
},
})
.json<{token: string; ttl: number}>()
logger.debug('success fresh token')
this.scheduleRefreshToken(token.ttl)
this.token = token.token
}
}

0 comments on commit ad62512

Please sign in to comment.