mirror of
https://github.com/jambonz/jambonz-api-server.git
synced 2026-10-31 20:04:18 +00:00
add list api keys for account, track last_used for api_keys
This commit is contained in:
1 parent
4efee5a8b8
commit
3be0412de1
7 files changed
+208
-28
No files matched your search
@@ -3,6 +3,7 @@ const request = require('request');
|
||||
const {DbErrorBadRequest, DbErrorUnprocessableRequest} = require('../../utils/errors');
|
||||
const Account = require('../../models/account');
|
||||
const Webhook = require('../../models/webhook');
|
||||
const ApiKey = require('../../models/api-key');
|
||||
const ServiceProvider = require('../../models/service-provider');
|
||||
const decorate = require('./decorate');
|
||||
const snakeCase = require('../../utils/snake-case');
|
||||
@@ -27,6 +28,15 @@ function coerceNumbers(callInfo) {
|
||||
return callInfo;
|
||||
}
|
||||
|
||||
async function updateLastUsed(logger, sid, req) {
|
||||
if (req.user.hasAdminAuth || req.user.hasServiceProviderAuth) return;
|
||||
try {
|
||||
await ApiKey.updateLastUsed(sid);
|
||||
} catch (err) {
|
||||
logger.error({err}, `Error updating last used for accountSid ${sid}`);
|
||||
}
|
||||
}
|
||||
|
||||
function validateUpdateCall(opts) {
|
||||
// only one type of update can be supplied per request
|
||||
const hasWhisper = opts.whisper;
|
||||
@@ -251,6 +261,19 @@ router.put('/:sid', async(req, res) => {
|
||||
return res.status(404).end();
|
||||
}
|
||||
res.status(204).end();
|
||||
updateLastUsed(logger, sid, req).catch((err) => {});
|
||||
} catch (err) {
|
||||
sysError(logger, res, err);
|
||||
}
|
||||
});
|
||||
|
||||
/* retrieve account level api keys */
|
||||
router.get('/:sid/ApiKeys', async(req, res) => {
|
||||
const logger = req.app.locals.logger;
|
||||
try {
|
||||
const results = await ApiKey.retrieveAll(req.params.sid);
|
||||
res.status(200).json(results);
|
||||
updateLastUsed(logger, req.params.sid, req).catch((err) => {});
|
||||
} catch (err) {
|
||||
sysError(logger, res, err);
|
||||
}
|
||||
@@ -276,6 +299,7 @@ router.post('/:sid/Calls', async(req, res) => {
|
||||
await validateCreateCall(logger, sid, req);
|
||||
|
||||
logger.debug({payload: req.body}, `sending createCall API request to to ${ip}`);
|
||||
updateLastUsed(logger, sid, req).catch((err) => {});
|
||||
request({
|
||||
url: serviceUrl,
|
||||
method: 'POST',
|
||||
@@ -308,6 +332,7 @@ router.get('/:sid/Calls', async(req, res) => {
|
||||
const calls = await listCalls(accountSid);
|
||||
logger.debug(`retrieved ${calls.length} calls for account sid ${accountSid}`);
|
||||
res.status(200).json(coerceNumbers(snakeCase(calls)));
|
||||
updateLastUsed(logger, accountSid, req).catch((err) => {});
|
||||
} catch (err) {
|
||||
sysError(logger, res, err);
|
||||
}
|
||||
@@ -331,6 +356,7 @@ router.get('/:sid/Calls/:callSid', async(req, res) => {
|
||||
logger.debug(`call not found for call sid ${callSid}`);
|
||||
res.sendStatus(404);
|
||||
}
|
||||
updateLastUsed(logger, accountSid, req).catch((err) => {});
|
||||
} catch (err) {
|
||||
sysError(logger, res, err);
|
||||
}
|
||||
@@ -354,6 +380,7 @@ router.delete('/:sid/Calls/:callSid', async(req, res) => {
|
||||
logger.debug(`call not found for call sid ${callSid}`);
|
||||
res.sendStatus(404);
|
||||
}
|
||||
updateLastUsed(logger, accountSid, req).catch((err) => {});
|
||||
} catch (err) {
|
||||
sysError(logger, res, err);
|
||||
}
|
||||
@@ -384,6 +411,7 @@ router.post('/:sid/Calls/:callSid', async(req, res) => {
|
||||
logger.debug(`updateCall: call not found for call sid ${callSid}`);
|
||||
res.sendStatus(404);
|
||||
}
|
||||
updateLastUsed(logger, accountSid, req).catch((err) => {});
|
||||
} catch (err) {
|
||||
sysError(logger, res, err);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user