From b2bba618d253058f4a1fb54c5e5248869bea89b7 Mon Sep 17 00:00:00 2001 From: manas-plivo Date: Tue, 28 Jul 2020 13:32:05 +0530 Subject: [PATCH 1/7] mms powerpack --- lib/resources/powerpacks.js | 46 +++++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/lib/resources/powerpacks.js b/lib/resources/powerpacks.js index e2706e0..f10c34e 100644 --- a/lib/resources/powerpacks.js +++ b/lib/resources/powerpacks.js @@ -75,6 +75,14 @@ export class Powerpack extends PlivoResource { } } + if (params.service != undefined) { + if (query == '') { + query = 'service=' + params.service; + } else { + query += '&service=' + params.service; + } + } + query = query + '&'; return query; @@ -92,15 +100,21 @@ export class Powerpack extends PlivoResource { let path = 'NumberPool/' + this.number_pool_id + '/Number/' + number + '/'; return super.customexecuteAction(path.toString().trim(), 'GET'); } - add_number(number) { + add_number(number, service = '') { var params = {}; params['rent'] = 'false'; + if (service != '') { + params['service'] = service + } let path = 'NumberPool/' + this.number_pool_id + '/Number/' + number + '/'; return super.customexecuteAction(path.toString().trim(), 'POST', params); } - add_tollfree(tollfree) { + add_tollfree(tollfree, service = '') { var params = {}; params['rent'] = 'false'; + if (service != '') { + params['service'] = service + } let path = 'NumberPool/' + this.number_pool_id + '/Tollfree/' + tollfree + '/'; return super.customexecuteAction(path.toString().trim(), 'POST', params); } @@ -134,12 +148,18 @@ export class Powerpack extends PlivoResource { let path = 'NumberPool/' + this.number_pool_id + '/Tollfree/'; return super.customexecuteAction(path.toString().trim(), 'GET', params); } - find_shortcode(shortcode) { + find_shortcode(shortcode, service = '') { let path = 'NumberPool/' + this.number_pool_id + '/Shortcode/' + shortcode + '/'; + if (service != '') { + path = path + '&service=' + service + } return super.customexecuteAction(path.toString().trim(), 'GET'); } - find_tollfree(tollfree) { + find_tollfree(tollfree, service = '') { let path = 'NumberPool/' + this.number_pool_id + '/Tollfree/' + tollfree + '/'; + if (service != '') { + path = path + '&service=' + service + } return super.customexecuteAction(path.toString().trim(), 'GET'); } buy_add_number(params) { @@ -151,6 +171,9 @@ export class Powerpack extends PlivoResource { if (params.country_iso2 != undefined) { params['country_iso'] = params.country_iso2; } + if (params.service != undefined) { + params['service'] = params.service; + } var test = super.customexecuteGetNumberAction('PhoneNumber/', 'GET', params); return test.then((val) => { let path = 'NumberPool/' + this.number_pool_id + '/Number/' + val + '/'; @@ -229,6 +252,9 @@ export class Numbers extends PlivoResource { if (params.country_iso2 != undefined) { params['country_iso'] = params.country_iso2; } + if (params.service != undefined) { + params['service'] = params.service; + } var test = super.customexecuteGetNumberAction('PhoneNumber/', 'GET', params); return test.then((val) => { let path = 'NumberPool/' + this.number_pool_id + '/Number/' + val + '/'; @@ -294,6 +320,13 @@ export class Numbers extends PlivoResource { query += '&offset=' + params.offset; } } + if (params.service != undefined) { + if (query == '') { + query = 'service=' + params.service; + } else { + query += '&service=' + params.service; + } + } query = query + '&'; @@ -304,9 +337,12 @@ export class Numbers extends PlivoResource { let path = 'NumberPool/' + this.number_pool_id + '/Number/' + number + '/'; return super.customexecuteAction(path.toString().trim(), 'GET'); } - add(number) { + add(number, service='') { var params = {}; params['rent'] = 'false'; + if (service != '') { + params['service'] = service + } let path = 'NumberPool/' + this.number_pool_id + '/Number/' + number + '/'; return super.customexecuteAction(path.toString().trim(), 'POST', params); } From 403b3d3eae93ebf540dd9153632617524b7c0d71 Mon Sep 17 00:00:00 2001 From: manas-plivo Date: Tue, 25 Aug 2020 11:50:31 +0530 Subject: [PATCH 2/7] version updated --- CHANGELOG.md | 3 +++ package.json | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1aa8556..9f917f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Change Log +## [4.8.0](https://github.com/plivo/plivo-node/releases/tag/v4.8.0)(2020-08-25) +- Powerpack for MMS + ## [4.7.0](https://github.com/plivo/plivo-node/releases/tag/v4.7.0)(2020-05-28) - Add JWT helper functions. diff --git a/package.json b/package.json index bda1ac2..c435957 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plivo", - "version": "4.7.0", + "version": "4.8.0", "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": [ From 69a29fdee5566e82559938a9e59a76a4592260b2 Mon Sep 17 00:00:00 2001 From: Nixon Samuel Date: Mon, 7 Sep 2020 12:22:41 +0530 Subject: [PATCH 3/7] bump version to 4.9.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c435957..494114d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plivo", - "version": "4.8.0", + "version": "4.9.0", "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": [ From a74541f96d74fb707b6d7d48dd6f21c470deb480 Mon Sep 17 00:00:00 2001 From: nixonsam <37671608+nixonsam@users.noreply.github.com> Date: Mon, 7 Sep 2020 12:31:47 +0530 Subject: [PATCH 4/7] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b1d030c..f718bd0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ # Change Log ## [4.9.0](https://github.com/plivo/plivo-node/releases/tag/v4.8.0)(2020-08-25) -- Powerpack for MMS +- Add Powerpack for MMS ## [4.8.0](https://github.com/plivo/plivo-node/releases/tag/v4.8.0)(2020-07-23) - Add retries to multiple regions for voice requests. From 25030137c7befe0f330d0cb193a45b2182b2e7d8 Mon Sep 17 00:00:00 2001 From: Prashanth Pai Date: Tue, 15 Sep 2020 14:53:38 +0530 Subject: [PATCH 5/7] Add support for Lookup API Signed-off-by: Prashanth Pai --- CHANGELOG.md | 3 +++ README.md | 16 +++++++++++++ examples/lookup.js | 11 +++++++++ lib/resources/lookup.js | 51 ++++++++++++++++++++++++++++++++++++++++ lib/rest/client-test.js | 4 ++++ lib/rest/client.js | 2 ++ lib/rest/request-test.js | 28 ++++++++++++++++++++++ lib/rest/request.js | 5 ++++ package.json | 2 +- test/lookup.js | 19 +++++++++++++++ 10 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 examples/lookup.js create mode 100644 lib/resources/lookup.js create mode 100644 test/lookup.js diff --git a/CHANGELOG.md b/CHANGELOG.md index f718bd0..27c62c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Change Log +## [4.10.0](https://github.com/plivo/plivo-node/releases/tag/v4.10.0)(2020-09-15) +- Add Lookup API support. + ## [4.9.0](https://github.com/plivo/plivo-node/releases/tag/v4.8.0)(2020-08-25) - Add Powerpack for MMS diff --git a/README.md b/README.md index 099930d..098570f 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,22 @@ client.calls.create( ``` +### Lookup a number + +```javascript +let plivo = require('plivo'); +let client = new plivo.Client('AUTH_ID', 'AUTH_TOKEN'); + +client.lookup.get( + "", + "service_provider" // default info +).then(function(response) { + console.log(response); +}).catch(function(error) { + console.log(error); +}); +``` + ### Generate Plivo XML ```javascript diff --git a/examples/lookup.js b/examples/lookup.js new file mode 100644 index 0000000..27a1795 --- /dev/null +++ b/examples/lookup.js @@ -0,0 +1,11 @@ +let plivo = require('plivo'); +let client = new plivo.Client('', ''); + +client.lookup.get( + "", + "service_provider" // default info +).then(function(response) { + console.log(response); +}).catch(function(error) { + console.log(error); +}); diff --git a/lib/resources/lookup.js b/lib/resources/lookup.js new file mode 100644 index 0000000..e875833 --- /dev/null +++ b/lib/resources/lookup.js @@ -0,0 +1,51 @@ +import { + extend, + validate +} from '../utils/common.js'; + +import { + PlivoResource, + PlivoResourceInterface +} from '../base'; + +import * as _ from "lodash"; + +const clientKey = Symbol(); +const action = 'Lookup/Number/'; // unused as it is overridden, only for unit tests +const idField = 'OVERRIDDEN'; +const LOOKUP_API_BASE_URL = 'https://api.plivo.com/v1/Lookup/Number' + +export class Number extends PlivoResource { + constructor(client, data = {}) { + super(action, Number, idField, client); + extend(this, data); + this[clientKey] = client; + } +} + +export class LookupInterface extends PlivoResourceInterface { + constructor(client, data = {}) { + super(action, Number, idField, client); + extend(this, data); + this[clientKey] = client; + } + + get(number, info = 'service_provider') { + let errors = validate([{ + field: 'number', + value: number, + validators: ['isRequired'] + }]); + + if (errors) { + return errors; + } + + let params = { + info: info, + overrideUrl: `${LOOKUP_API_BASE_URL}/${number}`, + }; + + return super.get(number, params); + } +} diff --git a/lib/rest/client-test.js b/lib/rest/client-test.js index 84907d4..b8bd8cc 100644 --- a/lib/rest/client-test.js +++ b/lib/rest/client-test.js @@ -27,6 +27,9 @@ import { import { MessageInterface } from '../resources/messages.js'; +import { + LookupInterface +} from '../resources/lookup.js'; import { PowerpackInterface } from '../resources/powerpacks.js'; @@ -81,6 +84,7 @@ export class Client { this.conferences = new ConferenceInterface(client); this.endpoints = new EndpointInterface(client); this.messages = new MessageInterface(client); + this.lookup = new LookupInterface(client); this.powerpacks = new PowerpackInterface(client); this.numbers = new NumberInterface(client); this.pricings = new PricingInterface(client); diff --git a/lib/rest/client.js b/lib/rest/client.js index 6cf527d..fb5874e 100644 --- a/lib/rest/client.js +++ b/lib/rest/client.js @@ -8,6 +8,7 @@ import { ApplicationInterface } from "../resources/applications"; import { ConferenceInterface } from "../resources/conferences"; import { EndpointInterface } from "../resources/endpoints"; import { MessageInterface } from "../resources/messages"; +import { LookupInterface } from "../resources/lookup"; import { PowerpackInterface } from "../resources/powerpacks"; import { NumberInterface } from "../resources/numbers"; import { PricingInterface } from "../resources/pricings"; @@ -75,6 +76,7 @@ export class Client { this.conferences = new ConferenceInterface(client); this.endpoints = new EndpointInterface(client); this.messages = new MessageInterface(client); + this.lookup = new LookupInterface(client); this.powerpacks = new PowerpackInterface(client); this.numbers = new NumberInterface(client); this.pricings = new PricingInterface(client); diff --git a/lib/rest/request-test.js b/lib/rest/request-test.js index e03aa13..8d38a69 100644 --- a/lib/rest/request-test.js +++ b/lib/rest/request-test.js @@ -905,6 +905,34 @@ export function Request(config) { }); } + // ============= Lookup =================== + else if (action == 'Lookup/Number/+14154305555' && method == 'GET') { + resolve({ + response: {}, + body: { + api_id: "930692a3-6f09-45b5-80f5-5585565fb30e", + country: { + code_iso2: "US", + code_iso3: "USA", + name: "United States" + }, + number_format: { + e164: "+14154305555", + international: "+1 415-430-5555", + national: "(415) 430-5555", + rfc3966: "tel:+1-415-430-5555" + }, + service_provider: { + mobile_country_code: "310", + mobile_network_code: "160", + name: "Cingular Wireless", + ported: true, + type: "mobile" + } + } + }); + } + // ============= Pricings =================== else if (method == 'GET' && action == 'Pricing/') { resolve({ diff --git a/lib/rest/request.js b/lib/rest/request.js index 45ccf87..94f1c72 100644 --- a/lib/rest/request.js +++ b/lib/rest/request.js @@ -47,6 +47,11 @@ export function Request(config) { options.url = apiVoiceUris[0] + config.authId + '/' + action; delete params.is_voice_request; isVoiceReq = true; + } else if (params.hasOwnProperty('override_url')) { + // currently used by Lookup API but is generic enough to be used + // by any product in future. + options.url = params.override_url; + delete params.override_url; } } diff --git a/package.json b/package.json index 494114d..80fab58 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plivo", - "version": "4.9.0", + "version": "4.10.0", "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": [ diff --git a/test/lookup.js b/test/lookup.js new file mode 100644 index 0000000..f28890f --- /dev/null +++ b/test/lookup.js @@ -0,0 +1,19 @@ +import assert from 'assert'; +import sinon from 'sinon'; +import { + Client +} from '../lib/rest/client-test'; +import { + PlivoGenericResponse +} from '../lib/base.js'; + +let client = new Client('sampleid', 'sammpletoken', 'sampleproxy'); + +describe('LookupInterface', function() { + it('should lookup number', function() { + return client.lookup.get('+14154305555') + .then(function(number) { + assert.equal(number.numberFormat.e164, '+14154305555') + }) + }); +}); From 16e0231b4c95d1b4273c42e14d98710832b24a2c Mon Sep 17 00:00:00 2001 From: Prashanth Pai Date: Mon, 21 Sep 2020 13:04:29 +0530 Subject: [PATCH 6/7] Change lookup API response ...as per feedback from product. Signed-off-by: Prashanth Pai --- CHANGELOG.md | 2 +- README.md | 2 +- examples/lookup.js | 2 +- lib/resources/lookup.js | 4 ++-- lib/rest/request-test.js | 8 +++++--- test/lookup.js | 2 ++ 6 files changed, 12 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 27c62c1..8fb1bb1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change Log -## [4.10.0](https://github.com/plivo/plivo-node/releases/tag/v4.10.0)(2020-09-15) +## [4.10.0](https://github.com/plivo/plivo-node/releases/tag/v4.10.0)(2020-09-21) - Add Lookup API support. ## [4.9.0](https://github.com/plivo/plivo-node/releases/tag/v4.8.0)(2020-08-25) diff --git a/README.md b/README.md index 098570f..c8dac9e 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ let client = new plivo.Client('AUTH_ID', 'AUTH_TOKEN'); client.lookup.get( "", - "service_provider" // default info + "carrier" // default type ).then(function(response) { console.log(response); }).catch(function(error) { diff --git a/examples/lookup.js b/examples/lookup.js index 27a1795..6a96b54 100644 --- a/examples/lookup.js +++ b/examples/lookup.js @@ -3,7 +3,7 @@ let client = new plivo.Client('', ''); client.lookup.get( "", - "service_provider" // default info + "carrier" // default info ).then(function(response) { console.log(response); }).catch(function(error) { diff --git a/lib/resources/lookup.js b/lib/resources/lookup.js index e875833..16f88ad 100644 --- a/lib/resources/lookup.js +++ b/lib/resources/lookup.js @@ -30,7 +30,7 @@ export class LookupInterface extends PlivoResourceInterface { this[clientKey] = client; } - get(number, info = 'service_provider') { + get(number, type = 'carrier') { let errors = validate([{ field: 'number', value: number, @@ -42,7 +42,7 @@ export class LookupInterface extends PlivoResourceInterface { } let params = { - info: info, + type: type, overrideUrl: `${LOOKUP_API_BASE_URL}/${number}`, }; diff --git a/lib/rest/request-test.js b/lib/rest/request-test.js index 8d38a69..558e3e7 100644 --- a/lib/rest/request-test.js +++ b/lib/rest/request-test.js @@ -911,24 +911,26 @@ export function Request(config) { response: {}, body: { api_id: "930692a3-6f09-45b5-80f5-5585565fb30e", + phone_number: "+14154305555", country: { code_iso2: "US", code_iso3: "USA", name: "United States" }, - number_format: { + format: { e164: "+14154305555", international: "+1 415-430-5555", national: "(415) 430-5555", rfc3966: "tel:+1-415-430-5555" }, - service_provider: { + carrier: { mobile_country_code: "310", mobile_network_code: "160", name: "Cingular Wireless", ported: true, type: "mobile" - } + }, + resource_uri: "/v1/Lookup/Number/+14154305555?type=carrier" } }); } diff --git a/test/lookup.js b/test/lookup.js index f28890f..d4f3c18 100644 --- a/test/lookup.js +++ b/test/lookup.js @@ -14,6 +14,8 @@ describe('LookupInterface', function() { return client.lookup.get('+14154305555') .then(function(number) { assert.equal(number.numberFormat.e164, '+14154305555') + assert.equal(number.phoneNumber, '+14154305555') + assert.equal(number.resourceUri, '/v1/Lookup/Number/+14154305555?type=carrier') }) }); }); From 0736c8d398bfcdb9a5e08a18ffa181d1a3a912c9 Mon Sep 17 00:00:00 2001 From: Prashanth Pai Date: Wed, 28 Oct 2020 12:09:26 +0530 Subject: [PATCH 7/7] Lookup API: Change endpoint and response ...as requested by product. Signed-off-by: Prashanth Pai --- CHANGELOG.md | 3 +++ README.md | 3 +-- examples/lookup.js | 3 +-- lib/resources/lookup.js | 4 ++-- lib/rest/request-test.js | 6 +++--- package.json | 2 +- test/lookup.js | 2 +- 7 files changed, 12 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fb1bb1..8c59970 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Change Log +## [4.11.0](https://github.com/plivo/plivo-node/releases/tag/v4.11.0)(2020-10-30) +- Change lookup API endpoint and response. + ## [4.10.0](https://github.com/plivo/plivo-node/releases/tag/v4.10.0)(2020-09-21) - Add Lookup API support. diff --git a/README.md b/README.md index c8dac9e..6e86df8 100644 --- a/README.md +++ b/README.md @@ -84,8 +84,7 @@ let plivo = require('plivo'); let client = new plivo.Client('AUTH_ID', 'AUTH_TOKEN'); client.lookup.get( - "", - "carrier" // default type + "" ).then(function(response) { console.log(response); }).catch(function(error) { diff --git a/examples/lookup.js b/examples/lookup.js index 6a96b54..eeaa57c 100644 --- a/examples/lookup.js +++ b/examples/lookup.js @@ -2,8 +2,7 @@ let plivo = require('plivo'); let client = new plivo.Client('', ''); client.lookup.get( - "", - "carrier" // default info + "" ).then(function(response) { console.log(response); }).catch(function(error) { diff --git a/lib/resources/lookup.js b/lib/resources/lookup.js index 16f88ad..8d0139f 100644 --- a/lib/resources/lookup.js +++ b/lib/resources/lookup.js @@ -11,9 +11,9 @@ import { import * as _ from "lodash"; const clientKey = Symbol(); -const action = 'Lookup/Number/'; // unused as it is overridden, only for unit tests +const action = 'Number/'; // unused as it is overridden, only for unit tests const idField = 'OVERRIDDEN'; -const LOOKUP_API_BASE_URL = 'https://api.plivo.com/v1/Lookup/Number' +const LOOKUP_API_BASE_URL = 'https://lookup.plivo.com/v1/Number' export class Number extends PlivoResource { constructor(client, data = {}) { diff --git a/lib/rest/request-test.js b/lib/rest/request-test.js index 558e3e7..be2e21d 100644 --- a/lib/rest/request-test.js +++ b/lib/rest/request-test.js @@ -913,8 +913,8 @@ export function Request(config) { api_id: "930692a3-6f09-45b5-80f5-5585565fb30e", phone_number: "+14154305555", country: { - code_iso2: "US", - code_iso3: "USA", + iso2: "US", + iso3: "USA", name: "United States" }, format: { @@ -927,7 +927,7 @@ export function Request(config) { mobile_country_code: "310", mobile_network_code: "160", name: "Cingular Wireless", - ported: true, + ported: "yes", type: "mobile" }, resource_uri: "/v1/Lookup/Number/+14154305555?type=carrier" diff --git a/package.json b/package.json index 80fab58..c3c1fb5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plivo", - "version": "4.10.0", + "version": "4.11.0", "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": [ diff --git a/test/lookup.js b/test/lookup.js index d4f3c18..ec3ab3e 100644 --- a/test/lookup.js +++ b/test/lookup.js @@ -15,7 +15,7 @@ describe('LookupInterface', function() { .then(function(number) { assert.equal(number.numberFormat.e164, '+14154305555') assert.equal(number.phoneNumber, '+14154305555') - assert.equal(number.resourceUri, '/v1/Lookup/Number/+14154305555?type=carrier') + assert.equal(number.resourceUri, '/v1/Number/+14154305555?type=carrier') }) }); });