@coko/server
Version:
Reusable server for use by Coko's projects
35 lines (25 loc) • 936 B
JavaScript
const {
invalidateProviderAccessToken,
} = require('../models/identity/identity.controller')
const makeCall = require('./makeCall')
const { getAuthTokens } = require('./tokens')
const authenticatedCall = async (userId, providerLabel, callParameters) => {
try {
if (!callParameters) throw new Error(`Call parameters are required`)
const accessToken = await getAuthTokens(userId, providerLabel)
const response = await makeCall(callParameters, accessToken)
if (response.status === 401) {
// for the case that something happened and accessToken become invalid -> set that expired
await invalidateProviderAccessToken(userId, providerLabel)
const freshAccessToken = await getAuthTokens(userId, providerLabel)
return makeCall(callParameters, freshAccessToken)
}
return response
} catch (e) {
throw new Error(e)
}
}
module.exports = {
authenticatedCall,
getAuthTokens,
}