24 lines
670 B
JavaScript
24 lines
670 B
JavaScript
"use strict";
|
|
|
|
/*
|
|
* LINE WORKSアクセストークンの有効期限切れ対策。長時間かかるアップロードループの
|
|
* 途中でトークンが失効しないよう、一定時間(thresholdMs)ごとに再取得する。
|
|
*/
|
|
|
|
function createTokenRefresher({ getUserAccessToken, thresholdMs = 50 * 60 * 1000, now = Date.now }) {
|
|
let token = null;
|
|
let fetchedAt = 0;
|
|
|
|
async function getToken() {
|
|
if (!token || now() - fetchedAt >= thresholdMs) {
|
|
token = await getUserAccessToken();
|
|
fetchedAt = now();
|
|
}
|
|
return token;
|
|
}
|
|
|
|
return { getToken };
|
|
}
|
|
|
|
module.exports = { createTokenRefresher };
|