working api to subspace

This commit is contained in:
Dave Horton
2021-12-06 14:20:17 -05:00
parent d2c2ed7d08
commit 7a25874703
2 changed files with 30 additions and 48 deletions
+15 -7
View File
@@ -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);
+15 -41
View File
@@ -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;
};