From a19138db0f82b9e1f2d24e7856534053050f5541 Mon Sep 17 00:00:00 2001 From: Koushik-Ayila Date: Wed, 7 Jul 2021 12:31:06 +0530 Subject: [PATCH 1/7] Fix MPC functions to pass params in a user-friendly way --- lib/resources/multiPartyCall.js | 220 ++++++++++++++++++-------------- 1 file changed, 127 insertions(+), 93 deletions(-) diff --git a/lib/resources/multiPartyCall.js b/lib/resources/multiPartyCall.js index 7d6ee1a..68470a9 100644 --- a/lib/resources/multiPartyCall.js +++ b/lib/resources/multiPartyCall.js @@ -311,8 +311,8 @@ export class MultiPartyCall extends PlivoResource{ return super.executeAction(this.id + '/Participant/', 'POST', params) } - start(){ - return super.executeAction(this.id + '/', 'POST', {'status' : 'active', 'isVoiceRequest' : 'true'}) + start(params){ + return super.executeAction(this.id + '/', 'POST', {'status' : params.status, 'isVoiceRequest' : 'true'}) } stop(){ @@ -509,14 +509,16 @@ export class MultiPartyCallInterface extends PlivoResourceInterface{ return super.list(params); } - get(uuid = null, friendlyName = null){ - if(uuid){ - validParam('uuid', uuid, [String], false) + get(params={}){ + if(params.uuid){ + validParam('uuid', params.uuid, [String], false) } - if(friendlyName){ - validParam('friendlyName', friendlyName, [String], false) + if(params.friendlyName){ + validParam('friendlyName', params.friendlyName, [String], false) } - let mpcId = this.makeMpcId(uuid, friendlyName) + let mpcId = this.makeMpcId(params.uuid, params.friendlyName) + delete params.uuid + delete params.friendlyName return new MultiPartyCall(this[clientKey], {id: mpcId[0] + mpcId[1]}).get(); } @@ -534,160 +536,192 @@ export class MultiPartyCallInterface extends PlivoResourceInterface{ return new MultiPartyCall(this[clientKey], {id: mpcId[0] + mpcId[1]}).addParticipant(params) } - start(uuid = null, friendlyName = null){ - if(uuid){ - validParam('uuid', uuid, [String], false) + start(params = {}){ + if(params.uuid){ + validParam('uuid', params.uuid, [String], false) } - if(friendlyName){ - validParam('friendlyName', friendlyName, [String], false) + if(params.friendlyName){ + validParam('friendlyName', params.friendlyName, [String], false) } - let mpcId = this.makeMpcId(uuid, friendlyName) - return new MultiPartyCall(this[clientKey], {id: mpcId[0] + mpcId[1]}).start() + let mpcId = this.makeMpcId(params.uuid, params.friendlyName) + delete params.uuid + delete params.friendlyName + return new MultiPartyCall(this[clientKey], {id: mpcId[0] + mpcId[1]}).start(params) } - stop(uuid = null, friendlyName = null){ - if(uuid){ - validParam('uuid', uuid, [String], false) + stop(params = {}){ + if(params.uuid){ + validParam('uuid', params.uuid, [String], false) } - if(friendlyName){ - validParam('friendlyName', friendlyName, [String], false) + if(params.friendlyName){ + validParam('friendlyName', params.friendlyName, [String], false) } - let mpcId = this.makeMpcId(uuid, friendlyName) + let mpcId = this.makeMpcId(params.uuid, params.friendlyName) + delete params.uuid + delete params.friendlyName return new MultiPartyCall(this[clientKey], {id: mpcId[0] + mpcId[1]}).stop() } - startRecording(uuid = null, friendlyName = null, params){ - if(uuid){ - validParam('uuid', uuid, [String], false) + startRecording(params={}){ + if(params.uuid){ + validParam('uuid', params.uuid, [String], false) } - if(friendlyName){ - validParam('friendlyName', friendlyName, [String], false) + if(params.friendlyName){ + validParam('friendlyName', params.friendlyName, [String], false) } - let mpcId = this.makeMpcId(uuid, friendlyName) + let mpcId = this.makeMpcId(params.uuid, params.friendlyName) + delete params.uuid + delete params.friendlyName return new MultiPartyCall(this[clientKey], {id: mpcId[0] + mpcId[1]}).startRecording(params) } - stopRecording(uuid = null, friendlyName = null){ - if(uuid){ - validParam('uuid', uuid, [String], false) + stopRecording(params={}){ + if(params.uuid){ + validParam('uuid', params.uuid, [String], false) } - if(friendlyName){ - validParam('friendlyName', friendlyName, [String], false) + if(params.friendlyName){ + validParam('friendlyName', params.friendlyName, [String], false) } - let mpcId = this.makeMpcId(uuid, friendlyName) + let mpcId = this.makeMpcId(params.uuid, params.friendlyName) + delete params.uuid + delete params.friendlyName return new MultiPartyCall(this[clientKey], {id: mpcId[0] + mpcId[1]}).stopRecording() } - pauseRecording(uuid = null, friendlyName = null){ - if(uuid){ - validParam('uuid', uuid, [String], false) + pauseRecording(params={}){ + if(params.uuid){ + validParam('uuid', params.uuid, [String], false) } - if(friendlyName){ - validParam('friendlyName', friendlyName, [String], false) + if(params.friendlyName){ + validParam('friendlyName', params.friendlyName, [String], false) } - let mpcId = this.makeMpcId(uuid, friendlyName) + let mpcId = this.makeMpcId(params.uuid, params.friendlyName) + delete params.uuid + delete params.friendlyName return new MultiPartyCall(this[clientKey], {id: mpcId[0] + mpcId[1]}).pauseRecording() } - resumeRecording(uuid = null, friendlyName = null){ - if(uuid){ - validParam('uuid', uuid, [String], false) + resumeRecording(params={}){ + if(params.uuid){ + validParam('uuid', params.uuid, [String], false) } - if(friendlyName){ - validParam('friendlyName', friendlyName, [String], false) + if(params.friendlyName){ + validParam('friendlyName', params.friendlyName, [String], false) } - let mpcId = this.makeMpcId(uuid, friendlyName) + let mpcId = this.makeMpcId(params.uuid, params.friendlyName) + delete params.uuid + delete params.friendlyName return new MultiPartyCall(this[clientKey], {id: mpcId[0] + mpcId[1]}).resumeRecording() } - startParticipantRecording(participantId, uuid = null, friendlyName = null, params){ - if(uuid){ - validParam('uuid', uuid, [String], false) + startParticipantRecording(participantId, params={}){ + validParam('participantId', participantId, [String, Number], true) + if(params.uuid){ + validParam('uuid', params.uuid, [String], false) } - if(friendlyName){ - validParam('friendlyName', friendlyName, [String], false) + if(params.friendlyName){ + validParam('friendlyName', params.friendlyName, [String], false) } - let mpcId = this.makeMpcId(uuid, friendlyName) + let mpcId = this.makeMpcId(params.uuid, params.friendlyName) + delete params.uuid + delete params.friendlyName return new MultiPartyCallParticipant(this[clientKey], {id: mpcId[0] + mpcId[1], secondaryId: participantId}).startParticipantRecording(params) } - stopParticipantRecording(participantId, uuid = null, friendlyName = null){ - if(uuid){ - validParam('uuid', uuid, [String], false) + stopParticipantRecording(participantId, params={}){ + validParam('participantId', participantId, [String, Number], true) + if(params.uuid){ + validParam('uuid', params.uuid, [String], false) } - if(friendlyName){ - validParam('friendlyName', friendlyName, [String], false) + if(params.friendlyName){ + validParam('friendlyName', params.friendlyName, [String], false) } - let mpcId = this.makeMpcId(uuid, friendlyName) + let mpcId = this.makeMpcId(params.uuid, params.friendlyName) + delete params.uuid + delete params.friendlyName return new MultiPartyCallParticipant(this[clientKey], {id: mpcId[0] + mpcId[1], secondaryId: participantId}).stopParticipantRecording() } - pauseParticipantRecording(participantId, uuid = null, friendlyName = null){ - if(uuid){ - validParam('uuid', uuid, [String], false) + pauseParticipantRecording(participantId, params={}){ + validParam('participantId', participantId, [String, Number], true) + if(params.uuid){ + validParam('uuid', params.uuid, [String], false) } - if(friendlyName){ - validParam('friendlyName', friendlyName, [String], false) + if(params.friendlyName){ + validParam('friendlyName', params.friendlyName, [String], false) } - let mpcId = this.makeMpcId(uuid, friendlyName) + let mpcId = this.makeMpcId(params.uuid, params.friendlyName) + delete params.uuid + delete params.friendlyName return new MultiPartyCallParticipant(this[clientKey], {id: mpcId[0] + mpcId[1], secondaryId: participantId}).pauseParticipantRecording() } - resumeParticipantRecording(participantId, uuid = null, friendlyName = null){ - if(uuid){ - validParam('uuid', uuid, [String], false) + resumeParticipantRecording(participantId, params={}){ + validParam('participantId', participantId, [String, Number], true) + if(params.uuid){ + validParam('uuid', params.uuid, [String], false) } - if(friendlyName){ - validParam('friendlyName', friendlyName, [String], false) + if(params.friendlyName){ + validParam('friendlyName', params.friendlyName, [String], false) } - let mpcId = this.makeMpcId(uuid, friendlyName) + let mpcId = this.makeMpcId(params.uuid, params.friendlyName) + delete params.uuid + delete params.friendlyName return new MultiPartyCallParticipant(this[clientKey], {id: mpcId[0] + mpcId[1], secondaryId: participantId}).resumeParticipantRecording() } - listParticipants(uuid = null, friendlyName = null, params){ - if(uuid){ - validParam('uuid', uuid, [String], false) + listParticipants(params={}){ + if(params.uuid){ + validParam('uuid', params.uuid, [String], false) } - if(friendlyName){ - validParam('friendlyName', friendlyName, [String], false) + if(params.friendlyName){ + validParam('friendlyName', params.friendlyName, [String], false) } - let mpcId = this.makeMpcId(uuid, friendlyName) + let mpcId = this.makeMpcId(params.uuid, params.friendlyName) + delete params.uuid + delete params.friendlyName return new MultiPartyCall(this[clientKey], {id: mpcId[0] + mpcId[1]}).listParticipants(params) } - updateParticipant(participantId, uuid= null, friendlyName = null, params){ + updateParticipant(participantId, params={}){ validParam('participantId', participantId, [String, Number], true) - if(uuid){ - validParam('uuid', uuid, [String], false) + if(params.uuid){ + validParam('uuid', params.uuid, [String], false) } - if(friendlyName){ - validParam('friendlyName', friendlyName, [String], false) + if(params.friendlyName){ + validParam('friendlyName', params.friendlyName, [String], false) } - let mpcId = this.makeMpcId(uuid, friendlyName) + let mpcId = this.makeMpcId(params.uuid, params.friendlyName) + delete params.uuid + delete params.friendlyName return new MultiPartyCallParticipant(this[clientKey], {id: mpcId[0] + mpcId[1], secondaryId: participantId}).updateParticipant(params) } - kickParticipant(participantId, uuid = null, friendlyName = null){ + kickParticipant(participantId, params={}){ validParam('participantId', participantId, [String, Number], true) - if(uuid){ - validParam('uuid', uuid, [String], false) + if(params.uuid){ + validParam('uuid', params.uuid, [String], false) } - if(friendlyName){ - validParam('friendlyName', friendlyName, [String], false) + if(params.friendlyName){ + validParam('friendlyName', params.friendlyName, [String], false) } - let mpcId = this.makeMpcId(uuid, friendlyName) + let mpcId = this.makeMpcId(params.uuid, params.friendlyName) + delete params.uuid + delete params.friendlyName return new MultiPartyCallParticipant(this[clientKey], {id: mpcId[0] + mpcId[1], secondaryId: participantId}).kickParticipant() } - getParticipant(participantId, uuid = null, friendlyName = null){ + getParticipant(participantId, params={}){ validParam('participantId', participantId, [String, Number], true) - if(uuid){ - validParam('uuid', uuid, [String], false) + if(params.uuid){ + validParam('uuid', params.uuid, [String], false) } - if(friendlyName){ - validParam('friendlyName', friendlyName, [String], false) + if(params.friendlyName){ + validParam('friendlyName', params.friendlyName, [String], false) } - let mpcId = this.makeMpcId(uuid, friendlyName) + let mpcId = this.makeMpcId(params.uuid, params.friendlyName) + delete params.uuid + delete params.friendlyName return new MultiPartyCallParticipant(this[clientKey], {id: mpcId[0] + mpcId[1], secondaryId: participantId}).getParticipant() } From 324b283c5fd627d556320fc7d677ec2451715c76 Mon Sep 17 00:00:00 2001 From: Koushik-Ayila Date: Wed, 7 Jul 2021 13:31:23 +0530 Subject: [PATCH 2/7] Added validation for status param in start MPC API --- lib/resources/multiPartyCall.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/resources/multiPartyCall.js b/lib/resources/multiPartyCall.js index 68470a9..d7426e5 100644 --- a/lib/resources/multiPartyCall.js +++ b/lib/resources/multiPartyCall.js @@ -312,6 +312,7 @@ export class MultiPartyCall extends PlivoResource{ } start(params){ + validParam('status', params.status, [String], true, 'active') return super.executeAction(this.id + '/', 'POST', {'status' : params.status, 'isVoiceRequest' : 'true'}) } From d584e6ad26344422009ac2a3910260d22d83ccf8 Mon Sep 17 00:00:00 2001 From: Koushik-Ayila Date: Wed, 7 Jul 2021 15:34:10 +0530 Subject: [PATCH 3/7] convert status variable value to lowercase --- lib/resources/multiPartyCall.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/resources/multiPartyCall.js b/lib/resources/multiPartyCall.js index d7426e5..70b7ee7 100644 --- a/lib/resources/multiPartyCall.js +++ b/lib/resources/multiPartyCall.js @@ -313,7 +313,7 @@ export class MultiPartyCall extends PlivoResource{ start(params){ validParam('status', params.status, [String], true, 'active') - return super.executeAction(this.id + '/', 'POST', {'status' : params.status, 'isVoiceRequest' : 'true'}) + return super.executeAction(this.id + '/', 'POST', {'status' : params.status.toLowerCase(), 'isVoiceRequest' : 'true'}) } stop(){ From 9233c200d427f1fc19cc134311b964694940816b Mon Sep 17 00:00:00 2001 From: Koushik-Ayila Date: Wed, 7 Jul 2021 15:36:19 +0530 Subject: [PATCH 4/7] convert status variable value to lowercase --- lib/resources/multiPartyCall.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/resources/multiPartyCall.js b/lib/resources/multiPartyCall.js index 70b7ee7..3d3fca8 100644 --- a/lib/resources/multiPartyCall.js +++ b/lib/resources/multiPartyCall.js @@ -312,7 +312,7 @@ export class MultiPartyCall extends PlivoResource{ } start(params){ - validParam('status', params.status, [String], true, 'active') + validParam('status', params.statustoLowerCase(), [String], true, 'active') return super.executeAction(this.id + '/', 'POST', {'status' : params.status.toLowerCase(), 'isVoiceRequest' : 'true'}) } From 56c7e528f2bb45a21610839d6d2dec3d9ad6201d Mon Sep 17 00:00:00 2001 From: Koushik-Ayila Date: Wed, 7 Jul 2021 15:37:09 +0530 Subject: [PATCH 5/7] convert status variable value to lowercase --- lib/resources/multiPartyCall.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/resources/multiPartyCall.js b/lib/resources/multiPartyCall.js index 3d3fca8..bcb6616 100644 --- a/lib/resources/multiPartyCall.js +++ b/lib/resources/multiPartyCall.js @@ -312,7 +312,7 @@ export class MultiPartyCall extends PlivoResource{ } start(params){ - validParam('status', params.statustoLowerCase(), [String], true, 'active') + validParam('status', params.status.toLowerCase(), [String], true, 'active') return super.executeAction(this.id + '/', 'POST', {'status' : params.status.toLowerCase(), 'isVoiceRequest' : 'true'}) } From a674b9f465d3b2c7705ad21fb46c673b71786fe0 Mon Sep 17 00:00:00 2001 From: Koushik-Ayila Date: Wed, 7 Jul 2021 20:08:54 +0530 Subject: [PATCH 6/7] Fixed status mandatory param bug --- lib/resources/multiPartyCall.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/resources/multiPartyCall.js b/lib/resources/multiPartyCall.js index bcb6616..0fe35c6 100644 --- a/lib/resources/multiPartyCall.js +++ b/lib/resources/multiPartyCall.js @@ -8,7 +8,7 @@ import { validRange, validMultipleDestinationNos, validMultipleDestinationIntegers, - isOneAmongStringUrl, multiValidParam + isOneAmongStringUrl, multiValidParam, InvalidRequestError } from '../rest/utils.js' const clientKey = Symbol(); @@ -312,7 +312,12 @@ export class MultiPartyCall extends PlivoResource{ } start(params){ - validParam('status', params.status.toLowerCase(), [String], true, 'active') + if(params.status) { + validParam('status', params.status.toLowerCase(), [String], true, 'active') + } + else{ + throw new InvalidRequestError("status is a mandatory parameter"); + } return super.executeAction(this.id + '/', 'POST', {'status' : params.status.toLowerCase(), 'isVoiceRequest' : 'true'}) } From d54dd6436664f177f789a2357a438257f761c74f Mon Sep 17 00:00:00 2001 From: Koushik-Ayila Date: Thu, 8 Jul 2021 10:54:35 +0530 Subject: [PATCH 7/7] Version bump up --- CHANGELOG.md | 3 +++ package.json | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 65a1554..9a3b868 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Change Log +## [v4.19.2](https://github.com/plivo/plivo-node/tree/v4.19.2) (2021-07-08) +- MPC SDK fixes to pass params in a user-friendly manner. + ## [v4.19.1](https://github.com/plivo/plivo-node/tree/v4.19.1) (2021-07-05) - **WARNING**: Removed the total_count parameter in meta data for list MDR response diff --git a/package.json b/package.json index e40b1c5..72a3236 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plivo", - "version": "4.19.1", + "version": "4.19.2", "description": "A Node.js SDK to make voice calls and send SMS using Plivo and to generate Plivo XML", "homepage": "https://github.com/plivo/plivo-node", "files": [