diff --git a/lib/routes/api/accounts.js b/lib/routes/api/accounts.js index bb1a93f..c7288b0 100644 --- a/lib/routes/api/accounts.js +++ b/lib/routes/api/accounts.js @@ -377,18 +377,26 @@ router.post('/:sid/SubspaceTeleport', async(req, res) => { const service_provider_sid = req.user.hasServiceProviderAuth ? req.user.service_provider_sid : null; const results = await Account.retrieve(req.params.sid, service_provider_sid); if (results.length === 0) return res.status(404).end(); - const {subspace_client_id, subspace_client_secret, sip_realm} = results[0]; - const {subspaceDestinationIpIOrUrl} = req.body; - logger.info({body: req.body}, 'SubspaceTeleport - create teleport'); - const destination = subspaceDestinationIpIOrUrl || sip_realm; + const {subspace_client_id, subspace_client_secret} = results[0]; + const {destination} = req.body; + const arr = /^(.*):\d+$/.exec(destination); + const dest = arr ? `sip:${arr[1]}` : `sip:${destination}`; - const teleport = await enableSubspace({subspace_client_id, subspace_client_secret, destination}); + const teleport = await enableSubspace({ + subspace_client_id, + subspace_client_secret, + destination: `sip:${dest}` + }); + logger.info({destination, teleport}, 'SubspaceTeleport - create teleport'); await Account.update(req.params.sid, { subspace_sip_teleport_id: teleport.id, - subspace_sip_teleport_entry_points: JSON.stringify(teleport.teleport_entry_points)//hacky + subspace_sip_teleport_destinations: JSON.stringify(teleport.teleport_entry_points)//hacky }); - return res.status(204); + return res.status(200).json({ + subspace_sip_teleport_id: teleport.id, + subspace_sip_teleport_destinations: teleport.teleport_entry_points + }); } catch (err) { sysError(logger, res, err); diff --git a/lib/routes/api/utils.js b/lib/routes/api/utils.js index 794c677..a2dcefb 100644 --- a/lib/routes/api/utils.js +++ b/lib/routes/api/utils.js @@ -10,8 +10,8 @@ values (?, ?)`; const replaceOldSubscriptionSql = `UPDATE account_subscriptions SET effective_end_date = CURRENT_TIMESTAMP, change_reason = ? WHERE account_subscription_sid = ?`; -const request = require('request'); -require('request-debug')(request); +//const request = require('request'); +//require('request-debug')(request); const setupFreeTrial = async(logger, account_sid, isReturningUser) => { const sid = uuid(); @@ -227,32 +227,26 @@ const checkLimits = async(req, res, next) => { next(); }; -const getSubspaceJWT = (id, secret) => { - return new Promise((resolve, reject) => { - request('https://id.subspace.com/oauth/token', { - method: 'POST', - json: true, - body: { - client_id: id, - client_secret: secret, - audience: 'https://api.subspace.com/', - grant_type: 'client_credentials', - } - }, (err, msg, body) => { - if (err) return reject(err); - resolve(body.access_token) - }); - }); +const getSubspaceJWT = async(id, secret) => { + const postJwt = bent('https://id.subspace.com', 'POST', 'json', 200); + const jwt = await postJwt('/oauth/token', + { + client_id: id, + client_secret: secret, + audience: 'https://api.subspace.com/', + grant_type: 'client_credentials', + } + ); + return jwt.access_token; }; const enableSubspace = async(opts) => { const {subspace_client_id, subspace_client_secret, destination} = opts; const accessToken = await getSubspaceJWT(subspace_client_id, subspace_client_secret); console.log(`got jwt ${accessToken}`); - /* - const getTeleport = bent('https://api.subspace.com/v1/sip-teleports', 'POST', 'json', 200); + const postTeleport = bent('https://api.subspace.com', 'POST', 'json', 200); - const teleport = await getTeleport( + const teleport = await postTeleport('/v1/sip-teleports', { destination, name: 'Jambonz' @@ -264,25 +258,6 @@ const enableSubspace = async(opts) => { ); return teleport; - */ - return new Promise((resolve, reject) => { - request('https://api.subspace.com/v1/sip-teleports', { - method: 'POST', - json: true, - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ${accessToken}` - }, - body: { - destination: destination || 'sip:1.1.1.1', - name: 'Jambonz' - } - }, (err, msg, body) => { - if (err) return reject(err); - resolve(body); - }); - }); - }; const disableSubspace = async(opts) => { @@ -297,7 +272,6 @@ const disableSubspace = async(opts) => { Authorization: `Bearer ${accessToken}` } ); - return; };