mirror of
https://github.com/wassname/chatGPTBox.git
synced 2026-07-14 11:15:11 +08:00
* Add ChatGLM API * add minimal build * a small patch --------- Co-authored-by: josc146 <josStorer@outlook.com>
44 lines
975 B
JavaScript
44 lines
975 B
JavaScript
import jwt from 'jsonwebtoken'
|
|
|
|
let jwtToken = null
|
|
let tokenExpiration = null // Declare tokenExpiration in the module scope
|
|
|
|
function generateToken(apiKey, timeoutSeconds) {
|
|
const parts = apiKey.split('.')
|
|
if (parts.length !== 2) {
|
|
throw new Error('Invalid API key')
|
|
}
|
|
|
|
const ms = Date.now()
|
|
const currentSeconds = Math.floor(ms / 1000)
|
|
const [id, secret] = parts
|
|
const payload = {
|
|
api_key: id,
|
|
exp: currentSeconds + timeoutSeconds,
|
|
timestamp: currentSeconds,
|
|
}
|
|
|
|
jwtToken = jwt.sign(payload, secret, {
|
|
header: {
|
|
alg: 'HS256',
|
|
typ: 'JWT',
|
|
sign_type: 'SIGN',
|
|
},
|
|
})
|
|
tokenExpiration = ms + timeoutSeconds * 1000
|
|
}
|
|
|
|
function shouldRegenerateToken() {
|
|
const ms = Date.now()
|
|
return !jwtToken || ms >= tokenExpiration
|
|
}
|
|
|
|
function getToken(apiKey) {
|
|
if (shouldRegenerateToken()) {
|
|
generateToken(apiKey, 86400) // Hard-coded to regenerate the token every 24 hours
|
|
}
|
|
return jwtToken
|
|
}
|
|
|
|
export { getToken }
|