You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
filepizza/lib/ice.js

35 lines
796 B
JavaScript

var twilio = require('twilio')
var winston = require('winston')
if (process.env.TWILIO_SID && process.env.TWILIO_TOKEN) {
var client = twilio(process.env.TWILIO_SID, process.env.TWILIO_TOKEN)
} else {
var client = null
}
var CACHE_LIFETIME = 5 * 60 * 1000 // 5 minutes
var cachedPromise = null
function clearCache() {
cachedPromise = null
}
exports.getICEServers = function () {
if (client == null) return Promise.resolve({})
if (cachedPromise) return cachedPromise
cachedPromise = new Promise(function (resolve, reject) {
client.tokens.create({}, function(err, token) {
if (err) {
winston.error(err.message)
return resolve({})
}
setTimeout(clearCache, CACHE_LIFETIME)
resolve(token.ice_servers)
})
})
return cachedPromise
}