snakecase fix, include sip_status in dial action hook

This commit is contained in:
Dave Horton
2021-04-27 08:21:14 -04:00
parent 576f645489
commit 5cc4852bf9
6 changed files with 30 additions and 26 deletions

View File

@@ -8,7 +8,7 @@
"jsx": false, "jsx": false,
"modules": false "modules": false
}, },
"ecmaVersion": 2017 "ecmaVersion": 2018
}, },
"plugins": ["promise"], "plugins": ["promise"],
"rules": { "rules": {

View File

@@ -328,6 +328,7 @@ class TaskDial extends Task {
if (this.results.dialCallStatus !== CallStatus.Completed) { if (this.results.dialCallStatus !== CallStatus.Completed) {
Object.assign(this.results, { Object.assign(this.results, {
dialCallStatus: obj.callStatus, dialCallStatus: obj.callStatus,
dialSipStatus: obj.sipStatus,
dialCallSid: sd.callSid, dialCallSid: sd.callSid,
}); });
} }
@@ -436,6 +437,7 @@ class TaskDial extends Task {
Object.assign(this.results, { Object.assign(this.results, {
dialCallStatus: CallStatus.Completed, dialCallStatus: CallStatus.Completed,
dialSipStatus: 200,
dialCallSid: sd.callSid, dialCallSid: sd.callSid,
}); });

View File

@@ -1,7 +1,7 @@
const bent = require('bent'); const bent = require('bent');
const parseUrl = require('parse-url'); const parseUrl = require('parse-url');
const assert = require('assert'); const assert = require('assert');
const snakeCaseKeys = require('snakecase-keys'); const snakeCaseKeys = require('./snakecase-keys');
const toBase64 = (str) => Buffer.from(str || '', 'utf8').toString('base64'); const toBase64 = (str) => Buffer.from(str || '', 'utf8').toString('base64');
function basicAuth(username, password) { function basicAuth(username, password) {
@@ -62,7 +62,7 @@ class Requestor {
* @param {object} [params] - request parameters * @param {object} [params] - request parameters
*/ */
async request(hook, params) { async request(hook, params) {
const payload = params ? snakeCaseKeys(params, {exclude: ['customerData', 'sip']}) : null; const payload = params ? snakeCaseKeys(params, ['customerData', 'sip']) : null;
const url = hook.url || hook; const url = hook.url || hook;
const method = hook.method || 'POST'; const method = hook.method || 'POST';
const {username, password} = typeof hook === 'object' ? hook : {}; const {username, password} = typeof hook === 'object' ? hook : {};

View File

@@ -0,0 +1,22 @@
const snakeCase = require('to-snake-case');
const isObject = (value) => typeof value === 'object' && value !== null;
const snakeObject = (obj, excludes) => {
const target = {};
for (const [key, value] of Object.entries(obj)) {
if (excludes.includes(key)) {
target[key] = value;
continue;
}
const newKey = snakeCase(key);
const newValue = isObject(value) ? snakeObject(value, excludes) : value;
target[newKey] = newValue;
}
return target;
};
module.exports = (obj, excludes = []) => {
return snakeObject(obj, excludes);
};

24
package-lock.json generated
View File

@@ -21,10 +21,11 @@
"drachtio-srf": "^4.4.48", "drachtio-srf": "^4.4.48",
"express": "^4.17.1", "express": "^4.17.1",
"ip": "^1.1.5", "ip": "^1.1.5",
"map-obj": "^4.2.1",
"moment": "^2.29.1", "moment": "^2.29.1",
"parse-url": "^5.0.2", "parse-url": "^5.0.2",
"pino": "^6.11.1", "pino": "^6.11.1",
"snakecase-keys": "^3.2.1", "to-snake-case": "^1.0.0",
"uuid": "^8.3.2", "uuid": "^8.3.2",
"verify-aws-sns-signature": "^0.0.6", "verify-aws-sns-signature": "^0.0.6",
"xml2js": "^0.4.23" "xml2js": "^0.4.23"
@@ -4269,18 +4270,6 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true "dev": true
}, },
"node_modules/snakecase-keys": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-3.2.1.tgz",
"integrity": "sha512-CjU5pyRfwOtaOITYv5C8DzpZ8XA/ieRsDpr93HI2r6e3YInC6moZpSQbmUtg8cTk58tq2x3jcG2gv+p1IZGmMA==",
"dependencies": {
"map-obj": "^4.1.0",
"to-snake-case": "^1.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/sonic-boom": { "node_modules/sonic-boom": {
"version": "1.3.2", "version": "1.3.2",
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.3.2.tgz", "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.3.2.tgz",
@@ -8691,15 +8680,6 @@
} }
} }
}, },
"snakecase-keys": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/snakecase-keys/-/snakecase-keys-3.2.1.tgz",
"integrity": "sha512-CjU5pyRfwOtaOITYv5C8DzpZ8XA/ieRsDpr93HI2r6e3YInC6moZpSQbmUtg8cTk58tq2x3jcG2gv+p1IZGmMA==",
"requires": {
"map-obj": "^4.1.0",
"to-snake-case": "^1.0.0"
}
},
"sonic-boom": { "sonic-boom": {
"version": "1.3.2", "version": "1.3.2",
"resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.3.2.tgz", "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.3.2.tgz",

View File

@@ -42,7 +42,7 @@
"moment": "^2.29.1", "moment": "^2.29.1",
"parse-url": "^5.0.2", "parse-url": "^5.0.2",
"pino": "^6.11.1", "pino": "^6.11.1",
"snakecase-keys": "^3.2.1", "to-snake-case": "^1.0.0",
"uuid": "^8.3.2", "uuid": "^8.3.2",
"verify-aws-sns-signature": "^0.0.6", "verify-aws-sns-signature": "^0.0.6",
"xml2js": "^0.4.23" "xml2js": "^0.4.23"