endpoint to retrieve active queues (#156)

This commit is contained in:
Anton Voylenko
2023-04-22 21:48:07 +03:00
committed by GitHub
parent af3d03bef9
commit a574045f8a
5 changed files with 93 additions and 1 deletions

2
app.js
View File

@@ -33,6 +33,7 @@ const {
retrieveCall,
deleteCall,
listCalls,
listQueues,
purgeCalls,
retrieveSet,
addKey,
@@ -75,6 +76,7 @@ app.locals = {
retrieveCall,
deleteCall,
listCalls,
listQueues,
purgeCalls,
retrieveSet,
addKey,

View File

@@ -4,6 +4,7 @@ const {
retrieveCall,
deleteCall,
listCalls,
listQueues,
purgeCalls,
retrieveSet,
addKey,
@@ -20,6 +21,7 @@ module.exports = {
retrieveCall,
deleteCall,
listCalls,
listQueues,
purgeCalls,
retrieveSet,
addKey,

View File

@@ -890,4 +890,22 @@ router.post('/:sid/Messages', async(req, res) => {
}
});
/**
* retrieve info for a group of queues under an account
*/
router.get('/:sid/Queues', async(req, res) => {
const {logger, listQueues} = req.app.locals;
const { search } = req.query || {};
try {
const accountSid = parseAccountSid(req);
await validateRequest(req, accountSid);
const queues = search ? await listQueues(accountSid, search) : await listQueues(accountSid);
logger.debug(`retrieved ${queues.length} queues for account sid ${accountSid}`);
res.status(200).json(queues);
updateLastUsed(logger, accountSid, req).catch((err) => {});
} catch (err) {
sysError(logger, res, err);
}
});
module.exports = router;

View File

@@ -4038,7 +4038,46 @@ paths:
smpp_err_code:
type: string
400:
description: bad request
description: bad request
/Accounts/{AccountSid}/Queues:
parameters:
- name: AccountSid
in: path
required: true
schema:
type: string
format: uuid
- in: query
name: search
required: false
schema:
type: string
description: queue name of data to retrieve
get:
tags:
- Accounts
summary: retrieve active queues for an account
operationId: listQueues
responses:
200:
description: retrieve active queues records for a specified account
content:
application/json:
schema:
type: array
items:
type: object
properties:
name:
type: string
length:
type: string
500:
description: system error
content:
application/json:
schema:
$ref: '#/components/schemas/GeneralError'
components:
securitySchemes:
bearerAuth:

View File

@@ -13,6 +13,12 @@ const {
createServiceProvider,
createPhoneNumber,
deleteObjectBySid} = require('./utils');
const logger = require('../lib/logger');
const { pushBack } = require('@jambonz/realtimedb-helpers')({
host: process.env.JAMBONES_REDIS_HOST,
port: process.env.JAMBONES_REDIS_PORT || 6379
}, logger);
process.on('unhandledRejection', (reason, p) => {
console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);
@@ -261,6 +267,31 @@ test('account tests', async(t) => {
});
t.ok(result.statusCode === 204, 'successfully deleted a call session limit for an account');
/* query account queues */
await pushBack(`queue:${sid}:test`, 'url1');
await pushBack(`queue:${sid}:dummy`, 'url2');
result = await request.get(`/Accounts/${sid}/Queues`, {
auth: authAdmin,
resolveWithFullResponse: true,
json: true,
});
t.ok(result.statusCode === 200 && result.body.length === 2, 'successfully queried account queues info for an account');
result = await request.get(`/Accounts/${sid}/Queues?search=test`, {
auth: authAdmin,
resolveWithFullResponse: true,
json: true,
});
t.ok(result.statusCode === 200 && result.body.length === 1, 'successfully queried account queue info with search for an account');
result = await request.get(`/Accounts/29d41725-9d3a-4f89-9f0b-f32b3e4d3159/Queues`, {
auth: authAdmin,
resolveWithFullResponse: true,
json: true,
});
t.ok(result.statusCode === 200 && result.body.length === 0, 'successfully queried account queue info with for an invalid account');
/* delete account */
result = await request.delete(`/Accounts/${sid}`, {
auth: authAdmin,