RSSHub/lib/v2/twitter/web-api/token.js

45 lines
1.2 KiB
JavaScript

const config = require('@/config').value;
const login = require('./login');
let tokenIndex = 0;
let authentication = null;
let first = true;
async function initToken(tryGet) {
if (config.twitter.username && config.twitter.password && !authentication && first) {
authentication = await login(tryGet);
first = false;
}
}
function getToken() {
let token;
if (config.twitter.username && config.twitter.password) {
if (authentication) {
token = {
key: authentication.oauth_token,
secret: authentication.oauth_token_secret,
};
}
} else if (config.twitter.oauthTokens?.length && config.twitter.oauthTokenSecrets.length && config.twitter.oauthTokens.length === config.twitter.oauthTokenSecrets.length) {
token = {
key: config.twitter.oauthTokens[tokenIndex],
secret: config.twitter.oauthTokenSecrets[tokenIndex],
};
tokenIndex++;
if (tokenIndex >= config.twitter.oauthTokens.length) {
tokenIndex = 0;
}
} else {
throw new Error('Invalid twitter configs');
}
return token;
}
module.exports = {
initToken,
getToken,
};