@webex/calling 3.10.0 → 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/dist/module/CallHistory/CallHistory.js +20 -11
  2. package/dist/module/CallSettings/UcmBackendConnector.js +21 -8
  3. package/dist/module/CallSettings/WxCallBackendConnector.js +10 -15
  4. package/dist/module/CallingClient/CallingClient.js +83 -123
  5. package/dist/module/CallingClient/calling/call.js +73 -58
  6. package/dist/module/CallingClient/calling/callManager.js +7 -0
  7. package/dist/module/CallingClient/constants.js +3 -0
  8. package/dist/module/CallingClient/registration/register.js +85 -5
  9. package/dist/module/CallingClient/registration/webWorker.js +2 -2
  10. package/dist/module/CallingClient/registration/webWorkerStr.js +2 -2
  11. package/dist/module/Contacts/ContactsClient.js +19 -25
  12. package/dist/module/Events/impl/index.js +1 -1
  13. package/dist/module/Logger/index.js +2 -2
  14. package/dist/module/Voicemail/BroadworksBackendConnector.js +10 -18
  15. package/dist/module/Voicemail/UcmBackendConnector.js +7 -11
  16. package/dist/module/Voicemail/Voicemail.js +42 -68
  17. package/dist/module/Voicemail/WxCallBackendConnector.js +14 -28
  18. package/dist/module/common/Utils.js +31 -5
  19. package/dist/module/common/constants.js +2 -0
  20. package/dist/module/common/testUtil.js +1 -0
  21. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  22. package/dist/types/CallSettings/UcmBackendConnector.d.ts +1 -0
  23. package/dist/types/CallSettings/UcmBackendConnector.d.ts.map +1 -1
  24. package/dist/types/CallSettings/WxCallBackendConnector.d.ts.map +1 -1
  25. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  26. package/dist/types/CallingClient/calling/call.d.ts +4 -0
  27. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  28. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  29. package/dist/types/CallingClient/constants.d.ts +3 -0
  30. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  31. package/dist/types/CallingClient/registration/register.d.ts +4 -0
  32. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  33. package/dist/types/CallingClient/registration/types.d.ts +6 -0
  34. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  35. package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
  36. package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
  37. package/dist/types/Contacts/ContactsClient.d.ts +1 -0
  38. package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
  39. package/dist/types/Logger/index.d.ts +1 -2
  40. package/dist/types/Logger/index.d.ts.map +1 -1
  41. package/dist/types/SDKConnector/types.d.ts +16 -0
  42. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  43. package/dist/types/Voicemail/BroadworksBackendConnector.d.ts.map +1 -1
  44. package/dist/types/Voicemail/UcmBackendConnector.d.ts.map +1 -1
  45. package/dist/types/Voicemail/Voicemail.d.ts.map +1 -1
  46. package/dist/types/Voicemail/WxCallBackendConnector.d.ts.map +1 -1
  47. package/dist/types/common/Utils.d.ts +1 -1
  48. package/dist/types/common/Utils.d.ts.map +1 -1
  49. package/dist/types/common/constants.d.ts +2 -0
  50. package/dist/types/common/constants.d.ts.map +1 -1
  51. package/dist/types/common/testUtil.d.ts +1 -0
  52. package/dist/types/common/testUtil.d.ts.map +1 -1
  53. package/package.json +4 -4
  54. package/dist/CallHistory/CallHistory.js +0 -584
  55. package/dist/CallHistory/CallHistory.js.map +0 -1
  56. package/dist/CallHistory/CallHistory.test.js +0 -813
  57. package/dist/CallHistory/CallHistory.test.js.map +0 -1
  58. package/dist/CallHistory/callHistoryFixtures.js +0 -650
  59. package/dist/CallHistory/callHistoryFixtures.js.map +0 -1
  60. package/dist/CallHistory/constants.js +0 -38
  61. package/dist/CallHistory/constants.js.map +0 -1
  62. package/dist/CallHistory/types.js +0 -7
  63. package/dist/CallHistory/types.js.map +0 -1
  64. package/dist/CallSettings/CallSettings.js +0 -312
  65. package/dist/CallSettings/CallSettings.js.map +0 -1
  66. package/dist/CallSettings/CallSettings.test.js +0 -122
  67. package/dist/CallSettings/CallSettings.test.js.map +0 -1
  68. package/dist/CallSettings/UcmBackendConnector.js +0 -261
  69. package/dist/CallSettings/UcmBackendConnector.js.map +0 -1
  70. package/dist/CallSettings/UcmBackendConnector.test.js +0 -321
  71. package/dist/CallSettings/UcmBackendConnector.test.js.map +0 -1
  72. package/dist/CallSettings/WxCallBackendConnector.js +0 -604
  73. package/dist/CallSettings/WxCallBackendConnector.js.map +0 -1
  74. package/dist/CallSettings/WxCallBackendConnector.test.js +0 -905
  75. package/dist/CallSettings/WxCallBackendConnector.test.js.map +0 -1
  76. package/dist/CallSettings/constants.js +0 -31
  77. package/dist/CallSettings/constants.js.map +0 -1
  78. package/dist/CallSettings/testFixtures.js +0 -68
  79. package/dist/CallSettings/testFixtures.js.map +0 -1
  80. package/dist/CallSettings/types.js +0 -7
  81. package/dist/CallSettings/types.js.map +0 -1
  82. package/dist/CallingClient/CallingClient.js +0 -1071
  83. package/dist/CallingClient/CallingClient.js.map +0 -1
  84. package/dist/CallingClient/CallingClient.test.js +0 -1289
  85. package/dist/CallingClient/CallingClient.test.js.map +0 -1
  86. package/dist/CallingClient/callRecordFixtures.js +0 -101
  87. package/dist/CallingClient/callRecordFixtures.js.map +0 -1
  88. package/dist/CallingClient/calling/CallerId/index.js +0 -276
  89. package/dist/CallingClient/calling/CallerId/index.js.map +0 -1
  90. package/dist/CallingClient/calling/CallerId/index.test.js +0 -275
  91. package/dist/CallingClient/calling/CallerId/index.test.js.map +0 -1
  92. package/dist/CallingClient/calling/CallerId/types.js +0 -7
  93. package/dist/CallingClient/calling/CallerId/types.js.map +0 -1
  94. package/dist/CallingClient/calling/call.js +0 -3444
  95. package/dist/CallingClient/calling/call.js.map +0 -1
  96. package/dist/CallingClient/calling/call.test.js +0 -3260
  97. package/dist/CallingClient/calling/call.test.js.map +0 -1
  98. package/dist/CallingClient/calling/callManager.js +0 -456
  99. package/dist/CallingClient/calling/callManager.js.map +0 -1
  100. package/dist/CallingClient/calling/callManager.test.js +0 -741
  101. package/dist/CallingClient/calling/callManager.test.js.map +0 -1
  102. package/dist/CallingClient/calling/index.js +0 -30
  103. package/dist/CallingClient/calling/index.js.map +0 -1
  104. package/dist/CallingClient/calling/types.js +0 -74
  105. package/dist/CallingClient/calling/types.js.map +0 -1
  106. package/dist/CallingClient/callingClientFixtures.js +0 -143
  107. package/dist/CallingClient/callingClientFixtures.js.map +0 -1
  108. package/dist/CallingClient/constants.js +0 -237
  109. package/dist/CallingClient/constants.js.map +0 -1
  110. package/dist/CallingClient/line/index.js +0 -349
  111. package/dist/CallingClient/line/index.js.map +0 -1
  112. package/dist/CallingClient/line/line.test.js +0 -327
  113. package/dist/CallingClient/line/line.test.js.map +0 -1
  114. package/dist/CallingClient/line/types.js +0 -21
  115. package/dist/CallingClient/line/types.js.map +0 -1
  116. package/dist/CallingClient/registration/index.js +0 -19
  117. package/dist/CallingClient/registration/index.js.map +0 -1
  118. package/dist/CallingClient/registration/register.js +0 -1538
  119. package/dist/CallingClient/registration/register.js.map +0 -1
  120. package/dist/CallingClient/registration/register.test.js +0 -1537
  121. package/dist/CallingClient/registration/register.test.js.map +0 -1
  122. package/dist/CallingClient/registration/registerFixtures.js +0 -36
  123. package/dist/CallingClient/registration/registerFixtures.js.map +0 -1
  124. package/dist/CallingClient/registration/types.js +0 -7
  125. package/dist/CallingClient/registration/types.js.map +0 -1
  126. package/dist/CallingClient/registration/webWorker.js +0 -130
  127. package/dist/CallingClient/registration/webWorker.js.map +0 -1
  128. package/dist/CallingClient/registration/webWorker.test.js +0 -303
  129. package/dist/CallingClient/registration/webWorker.test.js.map +0 -1
  130. package/dist/CallingClient/registration/webWorkerStr.js +0 -15
  131. package/dist/CallingClient/registration/webWorkerStr.js.map +0 -1
  132. package/dist/CallingClient/types.js +0 -7
  133. package/dist/CallingClient/types.js.map +0 -1
  134. package/dist/CallingClient/windowsChromiumIceWarmupUtils.js +0 -142
  135. package/dist/CallingClient/windowsChromiumIceWarmupUtils.js.map +0 -1
  136. package/dist/Contacts/ContactsClient.js +0 -1215
  137. package/dist/Contacts/ContactsClient.js.map +0 -1
  138. package/dist/Contacts/ContactsClient.test.js +0 -1003
  139. package/dist/Contacts/ContactsClient.test.js.map +0 -1
  140. package/dist/Contacts/constants.js +0 -40
  141. package/dist/Contacts/constants.js.map +0 -1
  142. package/dist/Contacts/contactFixtures.js +0 -430
  143. package/dist/Contacts/contactFixtures.js.map +0 -1
  144. package/dist/Contacts/types.js +0 -43
  145. package/dist/Contacts/types.js.map +0 -1
  146. package/dist/Errors/catalog/CallError.js +0 -92
  147. package/dist/Errors/catalog/CallError.js.map +0 -1
  148. package/dist/Errors/catalog/CallingDeviceError.js +0 -86
  149. package/dist/Errors/catalog/CallingDeviceError.js.map +0 -1
  150. package/dist/Errors/catalog/ExtendedError.js +0 -44
  151. package/dist/Errors/catalog/ExtendedError.js.map +0 -1
  152. package/dist/Errors/catalog/LineError.js +0 -88
  153. package/dist/Errors/catalog/LineError.js.map +0 -1
  154. package/dist/Errors/index.js +0 -28
  155. package/dist/Errors/index.js.map +0 -1
  156. package/dist/Errors/types.js +0 -59
  157. package/dist/Errors/types.js.map +0 -1
  158. package/dist/Events/impl/index.js +0 -81
  159. package/dist/Events/impl/index.js.map +0 -1
  160. package/dist/Events/types.js +0 -107
  161. package/dist/Events/types.js.map +0 -1
  162. package/dist/Logger/index.js +0 -228
  163. package/dist/Logger/index.js.map +0 -1
  164. package/dist/Logger/index.test.js +0 -87
  165. package/dist/Logger/index.test.js.map +0 -1
  166. package/dist/Logger/types.js +0 -34
  167. package/dist/Logger/types.js.map +0 -1
  168. package/dist/Metrics/index.js +0 -535
  169. package/dist/Metrics/index.js.map +0 -1
  170. package/dist/Metrics/index.test.js +0 -463
  171. package/dist/Metrics/index.test.js.map +0 -1
  172. package/dist/Metrics/types.js +0 -64
  173. package/dist/Metrics/types.js.map +0 -1
  174. package/dist/SDKConnector/index.js +0 -103
  175. package/dist/SDKConnector/index.js.map +0 -1
  176. package/dist/SDKConnector/index.test.js +0 -9
  177. package/dist/SDKConnector/index.test.js.map +0 -1
  178. package/dist/SDKConnector/types.js +0 -7
  179. package/dist/SDKConnector/types.js.map +0 -1
  180. package/dist/SDKConnector/utils.js +0 -39
  181. package/dist/SDKConnector/utils.js.map +0 -1
  182. package/dist/SDKConnector/utils.test.js +0 -9
  183. package/dist/SDKConnector/utils.test.js.map +0 -1
  184. package/dist/Voicemail/BroadworksBackendConnector.js +0 -707
  185. package/dist/Voicemail/BroadworksBackendConnector.js.map +0 -1
  186. package/dist/Voicemail/BroadworksBackendConnector.test.js +0 -812
  187. package/dist/Voicemail/BroadworksBackendConnector.test.js.map +0 -1
  188. package/dist/Voicemail/UcmBackendConnector.js +0 -632
  189. package/dist/Voicemail/UcmBackendConnector.js.map +0 -1
  190. package/dist/Voicemail/UcmBackendConnector.test.js +0 -738
  191. package/dist/Voicemail/UcmBackendConnector.test.js.map +0 -1
  192. package/dist/Voicemail/Voicemail.js +0 -500
  193. package/dist/Voicemail/Voicemail.js.map +0 -1
  194. package/dist/Voicemail/Voicemail.test.js +0 -391
  195. package/dist/Voicemail/Voicemail.test.js.map +0 -1
  196. package/dist/Voicemail/WxCallBackendConnector.js +0 -671
  197. package/dist/Voicemail/WxCallBackendConnector.js.map +0 -1
  198. package/dist/Voicemail/WxCallBackendConnector.test.js +0 -1199
  199. package/dist/Voicemail/WxCallBackendConnector.test.js.map +0 -1
  200. package/dist/Voicemail/constants.js +0 -61
  201. package/dist/Voicemail/constants.js.map +0 -1
  202. package/dist/Voicemail/types.js +0 -7
  203. package/dist/Voicemail/types.js.map +0 -1
  204. package/dist/Voicemail/voicemailFixture.js +0 -524
  205. package/dist/Voicemail/voicemailFixture.js.map +0 -1
  206. package/dist/api.js +0 -157
  207. package/dist/api.js.map +0 -1
  208. package/dist/common/Utils.js +0 -1451
  209. package/dist/common/Utils.js.map +0 -1
  210. package/dist/common/Utils.test.js +0 -1744
  211. package/dist/common/Utils.test.js.map +0 -1
  212. package/dist/common/constants.js +0 -60
  213. package/dist/common/constants.js.map +0 -1
  214. package/dist/common/index.js +0 -19
  215. package/dist/common/index.js.map +0 -1
  216. package/dist/common/testUtil.js +0 -982
  217. package/dist/common/testUtil.js.map +0 -1
  218. package/dist/common/types.js +0 -75
  219. package/dist/common/types.js.map +0 -1
  220. package/dist/index.js +0 -321
  221. package/dist/index.js.map +0 -1
@@ -1,1451 +0,0 @@
1
- "use strict";
2
-
3
- var _typeof = require("@babel/runtime-corejs2/helpers/typeof");
4
- var _Array$from = require("@babel/runtime-corejs2/core-js/array/from");
5
- var _Symbol = require("@babel/runtime-corejs2/core-js/symbol");
6
- var _Symbol$iterator = require("@babel/runtime-corejs2/core-js/symbol/iterator");
7
- var _Array$isArray = require("@babel/runtime-corejs2/core-js/array/is-array");
8
- var _Object$keys2 = require("@babel/runtime-corejs2/core-js/object/keys");
9
- var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
10
- var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
11
- var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
12
- var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
13
- var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
14
- var _WeakMap = require("@babel/runtime-corejs2/core-js/weak-map");
15
- var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
16
- _Object$defineProperty(exports, "__esModule", {
17
- value: true
18
- });
19
- exports.emitFinalFailure = emitFinalFailure;
20
- exports.fetchVoicemailList = fetchVoicemailList;
21
- exports.filterMobiusUris = filterMobiusUris;
22
- exports.getCallingBackEnd = getCallingBackEnd;
23
- exports.getSortedVoicemailList = getSortedVoicemailList;
24
- exports.getVgActionEndpoint = getVgActionEndpoint;
25
- exports.getXsiActionEndpoint = getXsiActionEndpoint;
26
- exports.handleCallErrors = handleCallErrors;
27
- exports.handleCallingClientErrors = handleCallingClientErrors;
28
- exports.handleRegistrationErrors = handleRegistrationErrors;
29
- exports.inferIdFromUuid = inferIdFromUuid;
30
- exports.modifySdpForIPv4 = modifySdpForIPv4;
31
- exports.parseMediaQualityStatistics = parseMediaQualityStatistics;
32
- exports.resolveCallerIdByName = resolveCallerIdByName;
33
- exports.resolveCallerIdDisplay = resolveCallerIdDisplay;
34
- exports.resolveContact = resolveContact;
35
- exports.scimQuery = scimQuery;
36
- exports.serviceErrorCodeHandler = serviceErrorCodeHandler;
37
- exports.storeVoicemailList = storeVoicemailList;
38
- exports.uploadLogs = uploadLogs;
39
- exports.validateServiceData = validateServiceData;
40
- exports.waitForMsecs = void 0;
41
- var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
42
- var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
43
- var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
44
- var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
45
- var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
46
- var _parseInt2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/parse-int"));
47
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
48
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
49
- var platform = _interopRequireWildcard(require("platform"));
50
- var _uuid = require("uuid");
51
- var _types = require("../Metrics/types");
52
- var _Metrics = require("../Metrics");
53
- var _CallError = require("../Errors/catalog/CallError");
54
- var _types2 = require("../Errors/types");
55
- var _types3 = require("./types");
56
- var _Logger = _interopRequireDefault(require("../Logger"));
57
- var _CallingDeviceError = require("../Errors/catalog/CallingDeviceError");
58
- var _constants = require("../CallingClient/constants");
59
- var _constants2 = require("./constants");
60
- var _SDKConnector = _interopRequireDefault(require("../SDKConnector"));
61
- var _LineError = require("../Errors/catalog/LineError");
62
- function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
63
- function ownKeys(e, r) { var t = _Object$keys2(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
64
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
65
- function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof _Symbol && r[_Symbol$iterator] || r["@@iterator"]; if (!t) { if (_Array$isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
66
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? _Array$from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
67
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } /* eslint-disable no-fallthrough */ /* eslint-disable no-underscore-dangle */ /* eslint-disable @typescript-eslint/no-shadow */
68
- function filterMobiusUris(mobiusServers, defaultMobiusUrl) {
69
- var _mobiusServers$primar, _mobiusServers$backup;
70
- var logContext = {
71
- file: _constants.UTILS_FILE,
72
- method: 'filterMobiusUris'
73
- };
74
- var urisArrayPrimary = [];
75
- var urisArrayBackup = [];
76
- if (mobiusServers !== null && mobiusServers !== void 0 && (_mobiusServers$primar = mobiusServers.primary) !== null && _mobiusServers$primar !== void 0 && _mobiusServers$primar.uris) {
77
- _Logger.default.info('Adding Primary uris', logContext);
78
- var _iterator = _createForOfIteratorHelper(mobiusServers.primary.uris),
79
- _step;
80
- try {
81
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
82
- var uri = _step.value;
83
- urisArrayPrimary.push("".concat(uri).concat(_constants.URL_ENDPOINT));
84
- }
85
- } catch (err) {
86
- _iterator.e(err);
87
- } finally {
88
- _iterator.f();
89
- }
90
- }
91
- if (mobiusServers !== null && mobiusServers !== void 0 && (_mobiusServers$backup = mobiusServers.backup) !== null && _mobiusServers$backup !== void 0 && _mobiusServers$backup.uris) {
92
- _Logger.default.info('Adding Backup uris', logContext);
93
- var _iterator2 = _createForOfIteratorHelper(mobiusServers.backup.uris),
94
- _step2;
95
- try {
96
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
97
- var _uri = _step2.value;
98
- urisArrayBackup.push("".concat(_uri).concat(_constants.URL_ENDPOINT));
99
- }
100
- } catch (err) {
101
- _iterator2.e(err);
102
- } finally {
103
- _iterator2.f();
104
- }
105
- }
106
-
107
- /*
108
- * If there are no entries in both primary and backup arrays then add the default
109
- * uri in primary array, otherwise in backup.
110
- */
111
- _Logger.default.info('Adding Default uri', logContext);
112
- if (!urisArrayPrimary.length && !urisArrayBackup.length) {
113
- urisArrayPrimary.push("".concat(defaultMobiusUrl).concat(_constants.URL_ENDPOINT));
114
- } else {
115
- urisArrayBackup.push("".concat(defaultMobiusUrl).concat(_constants.URL_ENDPOINT));
116
- }
117
- var primaryUris = [];
118
- var backupUris = [];
119
-
120
- /* Remove duplicates from primary by keeping the order intact */
121
- for (var i = 0; i < urisArrayPrimary.length; i += 1) {
122
- if (primaryUris.indexOf(urisArrayPrimary[i]) === -1) {
123
- primaryUris.push(urisArrayPrimary[i]);
124
- }
125
- }
126
-
127
- /* Remove duplicates from backup by keeping the order intact */
128
- for (var _i = 0; _i < urisArrayBackup.length; _i += 1) {
129
- if (backupUris.indexOf(urisArrayBackup[_i]) === -1) {
130
- backupUris.push(urisArrayBackup[_i]);
131
- }
132
- }
133
- return {
134
- primary: primaryUris,
135
- backup: backupUris
136
- };
137
- }
138
-
139
- /**
140
- * Updates the error context for a particular calling client instance.
141
- *
142
- * @param errContext - Error Context as generated by the caller.
143
- * @param type - Error type based on status code.
144
- * @param message - Custom message for user.
145
- * @param correlationId - Unique identifier for a call.
146
- * @param callError - Call error instance.
147
- */
148
- function updateCallErrorContext(errContext, type, message, correlationId, callError) {
149
- var errObj = {};
150
- errObj.context = errContext;
151
- errObj.type = type;
152
- errObj.message = message;
153
- errObj.correlationId = correlationId;
154
- callError.setCallError(errObj);
155
- }
156
-
157
- /**
158
- * Updates the error context for a particular line instance.
159
- *
160
- * @param errContext - Error Context.
161
- * @param type - Error type based on status code.
162
- * @param message - Custom message for user.
163
- * @param status - Status of line.
164
- * @param lineError - Line error instance.
165
- */
166
- function updateLineErrorContext(errContext, type, message, status, lineError) {
167
- var errObj = {};
168
- errObj.context = errContext;
169
- errObj.type = type;
170
- errObj.message = message;
171
- errObj.status = status;
172
- lineError.setError(errObj);
173
- }
174
-
175
- /**
176
- * Updates the error context for a particular calling client instance.
177
- *
178
- * @param errContext - Error Context as generated by the caller.
179
- * @param type - Error type based on status code.
180
- * @param message - Custom message for user.
181
- * @param clientError - Client Error.
182
- */
183
- function updateErrorContext(errContext, type, message, clientError) {
184
- var errObj = {};
185
- errObj.context = errContext;
186
- errObj.type = type;
187
- errObj.message = message;
188
- clientError.setError(errObj);
189
- }
190
-
191
- /**
192
- * Emits final failure to the client after it gives up
193
- * retrying registration and records error metric.
194
- *
195
- * @param line - Instance of line.
196
- * @param caller - Method which called this handler.
197
- * @param file - File name from where error got reported.
198
- */
199
- function emitFinalFailure(emitterCb, loggerContext) {
200
- var clientError = (0, _LineError.createLineError)('', {}, _types2.ERROR_TYPE.DEFAULT, _types3.RegistrationStatus.INACTIVE);
201
- updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.SERVICE_UNAVAILABLE, 'An unknown error occurred. Wait a moment and try again. Please contact the administrator if the problem persists.', _types3.RegistrationStatus.INACTIVE, clientError);
202
- emitterCb(clientError);
203
- }
204
-
205
- /**
206
- * Handle various Registration related Error flows here. Decide whether to emit event or retry.
207
- * @param err - Error body.
208
- * @param emitterCb - LineErrorEmitterCallback
209
- * @param loggerContext - Logging context that has method and file name
210
- * @param restoreRegCb - Callback which will try restoring resgistration in case of 403
211
- *
212
- * In emitterCb,
213
- * For non final error scenarios in registration flow,
214
- * send Unregistered event only without any error message
215
- * in order to have the web client update only the UI
216
- * state to disconnected and not show any error dialog
217
- * to the end user as in those scenarios a retry will
218
- * be scheduled to attempt registration again.
219
- *
220
- */
221
- function handleRegistrationErrors(_x, _x2, _x3, _x4, _x5) {
222
- return _handleRegistrationErrors.apply(this, arguments);
223
- }
224
- /**
225
- * Handle various Error flows related to calling client here. Decide whether to emit event or retry.
226
- * @param err - Error body.
227
- * @param emitterCb - CallingClientErrorEmitter
228
- * @param loggerContext - Logging context that has method and file name
229
- * @param restoreRegCb - Callback which will try restoring resgistration in case of 403
230
- */
231
- function _handleRegistrationErrors() {
232
- _handleRegistrationErrors = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(err, emitterCb, loggerContext, retry429Cb, restoreRegCb) {
233
- var lineError, errorCode, finalError, caller, retryAfter, errorBody, code, errorMessage, _caller, _errorMessage, _errorMessage2, _errorMessage3;
234
- return _regenerator.default.wrap(function _callee$(_context) {
235
- while (1) switch (_context.prev = _context.next) {
236
- case 0:
237
- lineError = (0, _LineError.createLineError)('', {}, _types2.ERROR_TYPE.DEFAULT, _types3.RegistrationStatus.INACTIVE);
238
- errorCode = Number(err.statusCode);
239
- finalError = false;
240
- _Logger.default.warn("Status code: -> ".concat(errorCode), loggerContext);
241
- _context.t0 = errorCode;
242
- _context.next = _context.t0 === _types2.ERROR_CODE.BAD_REQUEST ? 7 : _context.t0 === _types2.ERROR_CODE.UNAUTHORIZED ? 12 : _context.t0 === _types2.ERROR_CODE.DEVICE_NOT_FOUND ? 17 : _context.t0 === _types2.ERROR_CODE.TOO_MANY_REQUESTS ? 22 : _context.t0 === _types2.ERROR_CODE.INTERNAL_SERVER_ERROR ? 27 : _context.t0 === _types2.ERROR_CODE.SERVICE_UNAVAILABLE ? 31 : _context.t0 === _types2.ERROR_CODE.FORBIDDEN ? 35 : 70;
243
- break;
244
- case 7:
245
- finalError = true;
246
- _Logger.default.warn("400 Bad Request", loggerContext);
247
- updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.BAD_REQUEST, 'Invalid input. Please verify the required parameters, sign out and then sign back in with the valid data', _types3.RegistrationStatus.INACTIVE, lineError);
248
- emitterCb(lineError, finalError);
249
- return _context.abrupt("break", 73);
250
- case 12:
251
- // Return it to the Caller
252
- finalError = true;
253
- _Logger.default.warn("401 Unauthorized", loggerContext);
254
- updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.TOKEN_ERROR, 'User is unauthorized due to an expired token. Sign out, then sign back in.', _types3.RegistrationStatus.INACTIVE, lineError);
255
- emitterCb(lineError, finalError);
256
- return _context.abrupt("break", 73);
257
- case 17:
258
- finalError = true;
259
- _Logger.default.warn("404 Device Not Found", loggerContext);
260
- updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.NOT_FOUND, 'Webex Calling is unable to find your device. Sign out, then sign back in', _types3.RegistrationStatus.INACTIVE, lineError);
261
- emitterCb(lineError, finalError);
262
- return _context.abrupt("break", 73);
263
- case 22:
264
- _Logger.default.warn("429 Too Many Requests", loggerContext);
265
- updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.TOO_MANY_REQUESTS, 'Server is handling too many request at the time. Wait a moment and try again', _types3.RegistrationStatus.INACTIVE, lineError);
266
- caller = loggerContext.method || 'handleErrors';
267
- if (retry429Cb && err.headers) {
268
- retryAfter = Number(err.headers['retry-after']);
269
- retry429Cb(retryAfter, caller);
270
- }
271
- return _context.abrupt("break", 73);
272
- case 27:
273
- _Logger.default.warn("500 Internal Server Error", loggerContext);
274
- updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.SERVER_ERROR, 'An unknown error occurred while placing the request. Wait a moment and try again.', _types3.RegistrationStatus.INACTIVE, lineError);
275
- emitterCb(lineError, finalError);
276
- return _context.abrupt("break", 73);
277
- case 31:
278
- _Logger.default.warn("503 Service Unavailable", loggerContext);
279
- updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.SERVICE_UNAVAILABLE, 'An error occurred on the server while processing the request. Wait a moment and try again.', _types3.RegistrationStatus.INACTIVE, lineError);
280
- emitterCb(lineError, finalError);
281
- return _context.abrupt("break", 73);
282
- case 35:
283
- _Logger.default.warn("403 Forbidden", loggerContext);
284
- errorBody = err.body;
285
- if (errorBody) {
286
- _context.next = 42;
287
- break;
288
- }
289
- _Logger.default.warn('Error response has no body, throwing default error', loggerContext);
290
- updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.FORBIDDEN_ERROR, 'An unauthorized action has been received. This action has been blocked. Please contact the administrator if this persists.', _types3.RegistrationStatus.INACTIVE, lineError);
291
- emitterCb(lineError, finalError);
292
- return _context.abrupt("return", finalError);
293
- case 42:
294
- code = Number(errorBody.errorCode);
295
- _Logger.default.warn("Error code found : ".concat(code), loggerContext);
296
- _context.t1 = code;
297
- _context.next = _context.t1 === _types2.DEVICE_ERROR_CODE.DEVICE_LIMIT_EXCEEDED ? 47 : _context.t1 === _types2.DEVICE_ERROR_CODE.DEVICE_CREATION_DISABLED ? 54 : _context.t1 === _types2.DEVICE_ERROR_CODE.DEVICE_CREATION_FAILED ? 60 : 65;
298
- break;
299
- case 47:
300
- errorMessage = 'User device limit exceeded';
301
- _Logger.default.warn(errorMessage, loggerContext);
302
- if (!restoreRegCb) {
303
- _context.next = 53;
304
- break;
305
- }
306
- _caller = loggerContext.method || 'handleErrors';
307
- _context.next = 53;
308
- return restoreRegCb(errorBody, _caller);
309
- case 53:
310
- return _context.abrupt("break", 69);
311
- case 54:
312
- _errorMessage = 'User is not configured for WebRTC calling. Please contact the administrator to resolve this issue.';
313
- finalError = true;
314
- updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.FORBIDDEN_ERROR, _errorMessage, _types3.RegistrationStatus.INACTIVE, lineError);
315
- _Logger.default.warn(_errorMessage, loggerContext);
316
- emitterCb(lineError, true);
317
- return _context.abrupt("break", 69);
318
- case 60:
319
- _errorMessage2 = 'An unknown error occurred while provisioning the device. Wait a moment and try again.';
320
- updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.FORBIDDEN_ERROR, _errorMessage2, _types3.RegistrationStatus.INACTIVE, lineError);
321
- _Logger.default.warn(_errorMessage2, loggerContext);
322
- emitterCb(lineError, finalError);
323
- return _context.abrupt("break", 69);
324
- case 65:
325
- _errorMessage3 = 'An unknown error occurred. Wait a moment and try again. Please contact the administrator if the problem persists.';
326
- updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.FORBIDDEN_ERROR, _errorMessage3, _types3.RegistrationStatus.INACTIVE, lineError);
327
- _Logger.default.warn(_errorMessage3, loggerContext);
328
- emitterCb(lineError, finalError);
329
- case 69:
330
- return _context.abrupt("break", 73);
331
- case 70:
332
- updateLineErrorContext(loggerContext, _types2.ERROR_TYPE.DEFAULT, 'Unknown error', _types3.RegistrationStatus.INACTIVE, lineError);
333
- _Logger.default.warn("Unknown Error", loggerContext);
334
- emitterCb(lineError, finalError);
335
- case 73:
336
- return _context.abrupt("return", finalError);
337
- case 74:
338
- case "end":
339
- return _context.stop();
340
- }
341
- }, _callee);
342
- }));
343
- return _handleRegistrationErrors.apply(this, arguments);
344
- }
345
- function handleCallingClientErrors(_x6, _x7, _x8) {
346
- return _handleCallingClientErrors.apply(this, arguments);
347
- }
348
- /**
349
- * Handler for call related errors.
350
- *
351
- * @param emitterCb - Event emitter function.
352
- * @param errorType - Type of error experienced.
353
- * @param errorLayer - Call control or media layer.
354
- * @param retryCb - Failure retry function.
355
- * @param correlationId - CorrelationId of the call.
356
- * @param err - Error Response.
357
- * @param caller - Caller function.
358
- * @param file - File name.
359
- */
360
- function _handleCallingClientErrors() {
361
- _handleCallingClientErrors = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2(err, emitterCb, loggerContext) {
362
- var clientError, errorCode, finalError;
363
- return _regenerator.default.wrap(function _callee2$(_context2) {
364
- while (1) switch (_context2.prev = _context2.next) {
365
- case 0:
366
- clientError = (0, _CallingDeviceError.createClientError)('', {}, _types2.ERROR_TYPE.DEFAULT, _types3.RegistrationStatus.INACTIVE);
367
- errorCode = Number(err.statusCode);
368
- finalError = false;
369
- _Logger.default.warn("Status code: -> ".concat(errorCode), loggerContext);
370
- _context2.t0 = errorCode;
371
- _context2.next = _context2.t0 === _types2.ERROR_CODE.UNAUTHORIZED ? 7 : _context2.t0 === _types2.ERROR_CODE.INTERNAL_SERVER_ERROR ? 12 : 16;
372
- break;
373
- case 7:
374
- finalError = true;
375
- _Logger.default.warn("401 Unauthorized", loggerContext);
376
- updateErrorContext(loggerContext, _types2.ERROR_TYPE.TOKEN_ERROR, 'User is unauthorized due to an expired token.', clientError);
377
- emitterCb(clientError, finalError);
378
- return _context2.abrupt("break", 19);
379
- case 12:
380
- _Logger.default.warn("500 Internal Server Error", loggerContext);
381
- updateErrorContext(loggerContext, _types2.ERROR_TYPE.SERVER_ERROR, 'An unknown error occurred while placing the request. Wait a moment and try again.', clientError);
382
- emitterCb(clientError, finalError);
383
- return _context2.abrupt("break", 19);
384
- case 16:
385
- updateErrorContext(loggerContext, _types2.ERROR_TYPE.DEFAULT, 'Unknown error', clientError);
386
- _Logger.default.warn("Unknown Error", loggerContext);
387
- emitterCb(clientError, finalError);
388
- case 19:
389
- _context2.next = 21;
390
- return uploadLogs();
391
- case 21:
392
- return _context2.abrupt("return", finalError);
393
- case 22:
394
- case "end":
395
- return _context2.stop();
396
- }
397
- }, _callee2);
398
- }));
399
- return _handleCallingClientErrors.apply(this, arguments);
400
- }
401
- function handleCallErrors(_x9, _x0, _x1, _x10, _x11, _x12, _x13) {
402
- return _handleCallErrors.apply(this, arguments);
403
- }
404
- /**
405
- *Function to return error details.
406
- *
407
- * @param errorCode - WebexRequestPayload // Error status code for failed cases.
408
- * @param err -.
409
- * @param loggerContext -.
410
- * @returns Error response (status code and error message).
411
- */
412
- function _handleCallErrors() {
413
- _handleCallErrors = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3(emitterCb, errorLayer, retryCb, correlationId, err, caller, file) {
414
- var loggerContext, callError, errorCode, errorBody, retryInterval, code, message;
415
- return _regenerator.default.wrap(function _callee3$(_context3) {
416
- while (1) switch (_context3.prev = _context3.next) {
417
- case 0:
418
- loggerContext = {
419
- file: file,
420
- method: caller
421
- };
422
- callError = (0, _CallError.createCallError)('', loggerContext, _types2.ERROR_TYPE.DEFAULT, '', errorLayer);
423
- errorCode = Number(err.statusCode);
424
- _Logger.default.warn("Status code: ->".concat(errorCode), loggerContext);
425
- _context3.t0 = errorCode;
426
- _context3.next = _context3.t0 === _types2.ERROR_CODE.UNAUTHORIZED ? 7 : _context3.t0 === _types2.ERROR_CODE.FORBIDDEN ? 11 : _context3.t0 === _types2.ERROR_CODE.SERVICE_UNAVAILABLE ? 11 : _context3.t0 === _types2.ERROR_CODE.DEVICE_NOT_FOUND ? 48 : _context3.t0 === _types2.ERROR_CODE.INTERNAL_SERVER_ERROR ? 52 : 56;
427
- break;
428
- case 7:
429
- _Logger.default.warn("401 Unauthorized", loggerContext);
430
- updateCallErrorContext(loggerContext, _types2.ERROR_TYPE.TOKEN_ERROR, 'User is unauthorized due to an expired token. Sign out, then sign back in.', correlationId, callError);
431
- emitterCb(callError);
432
- return _context3.abrupt("break", 57);
433
- case 11:
434
- errorBody = err.body;
435
- if (errorBody) {
436
- _context3.next = 17;
437
- break;
438
- }
439
- _Logger.default.warn('Error response has no body, throwing default error', loggerContext);
440
- updateCallErrorContext(loggerContext, err.statusCode === 403 ? _types2.ERROR_TYPE.FORBIDDEN_ERROR : _types2.ERROR_TYPE.SERVICE_UNAVAILABLE, err.statusCode === 403 ? 'An unauthorized action has been received. This action has been blocked. Please contact the administrator if this persists.' : 'An error occurred on the server while processing the request. Wait a moment and try again.', correlationId, callError);
441
- emitterCb(callError);
442
- return _context3.abrupt("return");
443
- case 17:
444
- if (!(err.headers && 'retry-after' in err.headers && retryCb)) {
445
- _context3.next = 22;
446
- break;
447
- }
448
- retryInterval = Number(err.headers['retry-after']);
449
- _Logger.default.warn("Retry Interval received: ".concat(retryInterval), loggerContext);
450
- retryCb(retryInterval);
451
- return _context3.abrupt("return");
452
- case 22:
453
- /* Handling various Error codes */
454
- code = Number(errorBody.errorCode);
455
- _context3.t1 = code;
456
- _context3.next = _context3.t1 === _types2.CALL_ERROR_CODE.INVALID_STATUS_UPDATE ? 26 : _context3.t1 === _types2.CALL_ERROR_CODE.DEVICE_NOT_REGISTERED ? 28 : _context3.t1 === _types2.CALL_ERROR_CODE.CALL_NOT_FOUND ? 30 : _context3.t1 === _types2.CALL_ERROR_CODE.ERROR_PROCESSING ? 32 : _context3.t1 === _types2.CALL_ERROR_CODE.USER_BUSY ? 34 : _context3.t1 === _types2.CALL_ERROR_CODE.PARSING_ERROR ? 36 : _context3.t1 === _types2.CALL_ERROR_CODE.NOT_ACCEPTABLE ? 38 : _context3.t1 === _types2.CALL_ERROR_CODE.CALL_REJECTED ? 40 : _context3.t1 === _types2.CALL_ERROR_CODE.NOT_AVAILABLE ? 42 : 44;
457
- break;
458
- case 26:
459
- message = 'An invalid status update has been received for the call. Wait a moment and try again.';
460
- return _context3.abrupt("break", 45);
461
- case 28:
462
- message = 'The client has unregistered. Please wait for the client to register before attempting the call. If error persists, sign out, sign back in and attempt the call.';
463
- return _context3.abrupt("break", 45);
464
- case 30:
465
- message = 'Call is not found on the server. Wait a moment and try again.';
466
- return _context3.abrupt("break", 45);
467
- case 32:
468
- message = 'An error occurred while processing the call on the server. Wait a moment and try again.';
469
- return _context3.abrupt("break", 45);
470
- case 34:
471
- message = 'Called user is busy.';
472
- return _context3.abrupt("break", 45);
473
- case 36:
474
- message = 'An error occurred while parsing the provided information. Wait a moment and try again.';
475
- return _context3.abrupt("break", 45);
476
- case 38:
477
- message = 'An error occurred on the server while accepting the call. Wait a moment and try again. Please contact the administrator if this persists.';
478
- return _context3.abrupt("break", 45);
479
- case 40:
480
- message = 'Call rejected by the server. Wait a moment and try again. Please contact the administrator if this persists.';
481
- return _context3.abrupt("break", 45);
482
- case 42:
483
- message = 'Calling services not available. Wait a moment and try again. Please contact the administrator if this persists.';
484
- return _context3.abrupt("break", 45);
485
- case 44:
486
- message = 'An unknown error occurred. Wait a moment and try again.';
487
- case 45:
488
- /* We just emit the errors to the app */
489
-
490
- updateCallErrorContext(loggerContext, err.statusCode === 403 ? _types2.ERROR_TYPE.FORBIDDEN_ERROR : _types2.ERROR_TYPE.SERVICE_UNAVAILABLE, message, correlationId, callError);
491
- emitterCb(callError);
492
- return _context3.abrupt("break", 57);
493
- case 48:
494
- _Logger.default.warn("404 Call Not Found", loggerContext);
495
- updateCallErrorContext(loggerContext, _types2.ERROR_TYPE.NOT_FOUND, 'Call is no longer active. Wait a moment and try again.', correlationId, callError);
496
- emitterCb(callError);
497
- return _context3.abrupt("break", 57);
498
- case 52:
499
- _Logger.default.warn("500 Internal Server Error", loggerContext);
500
- updateCallErrorContext(loggerContext, _types2.ERROR_TYPE.SERVER_ERROR, 'An unknown error occurred in the call. Wait a moment and try again.', correlationId, callError);
501
- emitterCb(callError);
502
- return _context3.abrupt("break", 57);
503
- case 56:
504
- _Logger.default.warn("Unknown Error", loggerContext);
505
- case 57:
506
- case "end":
507
- return _context3.stop();
508
- }
509
- }, _callee3);
510
- }));
511
- return _handleCallErrors.apply(this, arguments);
512
- }
513
- function serviceErrorCodeHandler(_x14, _x15) {
514
- return _serviceErrorCodeHandler.apply(this, arguments);
515
- }
516
- /**
517
- * @param stats - RTC peer connection stats.
518
- * @returns CallRtpStats.
519
- */
520
- function _serviceErrorCodeHandler() {
521
- _serviceErrorCodeHandler = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4(err, loggerContext) {
522
- var errorCode, failureMessage, errorDetails, _errorDetails, _errorDetails2, _errorDetails3, _errorDetails4, _errorDetails5, _errorDetails6, _errorDetails7, _errorDetails8;
523
- return _regenerator.default.wrap(function _callee4$(_context4) {
524
- while (1) switch (_context4.prev = _context4.next) {
525
- case 0:
526
- errorCode = Number(err.statusCode);
527
- failureMessage = 'FAILURE';
528
- _context4.t0 = errorCode;
529
- _context4.next = _context4.t0 === _types2.ERROR_CODE.BAD_REQUEST ? 5 : _context4.t0 === _types2.ERROR_CODE.UNAUTHORIZED ? 8 : _context4.t0 === _types2.ERROR_CODE.FORBIDDEN ? 11 : _context4.t0 === _types2.ERROR_CODE.DEVICE_NOT_FOUND ? 14 : _context4.t0 === _types2.ERROR_CODE.REQUEST_TIMEOUT ? 17 : _context4.t0 === _types2.ERROR_CODE.NOT_IMPLEMENTED ? 20 : _context4.t0 === _types2.ERROR_CODE.INTERNAL_SERVER_ERROR ? 23 : _context4.t0 === _types2.ERROR_CODE.SERVICE_UNAVAILABLE ? 26 : 29;
530
- break;
531
- case 5:
532
- _Logger.default.warn("400 Bad request", loggerContext);
533
- errorDetails = {
534
- statusCode: 400,
535
- data: {
536
- error: '400 Bad request'
537
- },
538
- message: failureMessage
539
- };
540
- return _context4.abrupt("return", errorDetails);
541
- case 8:
542
- _Logger.default.warn("401 User is unauthorised, possible token expiry", loggerContext);
543
- _errorDetails = {
544
- statusCode: 401,
545
- data: {
546
- error: 'User is unauthorised, possible token expiry'
547
- },
548
- message: failureMessage
549
- };
550
- return _context4.abrupt("return", _errorDetails);
551
- case 11:
552
- _Logger.default.warn("403 User request is forbidden", loggerContext);
553
- _errorDetails2 = {
554
- statusCode: 403,
555
- data: {
556
- error: 'User request is forbidden'
557
- },
558
- message: failureMessage
559
- };
560
- return _context4.abrupt("return", _errorDetails2);
561
- case 14:
562
- _Logger.default.warn("404 User info not found", loggerContext);
563
- _errorDetails3 = {
564
- statusCode: 404,
565
- data: {
566
- error: 'User info not found'
567
- },
568
- message: failureMessage
569
- };
570
- return _context4.abrupt("return", _errorDetails3);
571
- case 17:
572
- _Logger.default.warn("408 Request to the server timedout", loggerContext);
573
- _errorDetails4 = {
574
- statusCode: 408,
575
- data: {
576
- error: 'Request to the server timedout'
577
- },
578
- message: failureMessage
579
- };
580
- return _context4.abrupt("return", _errorDetails4);
581
- case 20:
582
- _Logger.default.warn("501 Not Implemented error occurred", loggerContext);
583
- _errorDetails5 = {
584
- statusCode: 501,
585
- data: {
586
- error: 'Method is not implemented at the backend'
587
- },
588
- message: failureMessage
589
- };
590
- return _context4.abrupt("return", _errorDetails5);
591
- case 23:
592
- _Logger.default.warn("500 Internal server error occurred", loggerContext);
593
- _errorDetails6 = {
594
- statusCode: 500,
595
- data: {
596
- error: 'Internal server error occurred'
597
- },
598
- message: failureMessage
599
- };
600
- return _context4.abrupt("return", _errorDetails6);
601
- case 26:
602
- _Logger.default.warn("503 Unable to establish a connection with the server", loggerContext);
603
- _errorDetails7 = {
604
- statusCode: 503,
605
- data: {
606
- error: 'Unable to establish a connection with the server'
607
- },
608
- message: failureMessage
609
- };
610
- return _context4.abrupt("return", _errorDetails7);
611
- case 29:
612
- _Logger.default.warn("".concat(errorCode || 422, " Exception has occurred"), loggerContext);
613
- _errorDetails8 = {
614
- statusCode: errorCode || 422,
615
- data: {
616
- error: "".concat(errorCode || 422, " Exception has occurred")
617
- },
618
- message: failureMessage
619
- };
620
- return _context4.abrupt("return", _errorDetails8);
621
- case 32:
622
- case "end":
623
- return _context4.stop();
624
- }
625
- }, _callee4);
626
- }));
627
- return _serviceErrorCodeHandler.apply(this, arguments);
628
- }
629
- function parseMediaQualityStatistics(stats) {
630
- if (!stats || navigator.userAgent.indexOf('Firefox') !== -1) {
631
- _Logger.default.info('RTCStatsReport is null, adding dummy stats', {
632
- file: _constants.UTILS_FILE,
633
- method: 'parseMediaQualityStatistics'
634
- });
635
- return _constants.DUMMY_METRICS;
636
- }
637
- try {
638
- var type;
639
- var id;
640
- var inboundCodec;
641
- var outboundCodec;
642
- var localCandidates = {};
643
- var candidatePairs = {};
644
- var codecList = {};
645
- var rxStat = {};
646
- var txStat = {};
647
- var vqPayload = {};
648
- var jitterBufferDelay = 0;
649
- var jitterBufferEmittedCount = 0;
650
- var totalRoundTripTime = 0;
651
- var roundTripTimeMeasurements = 0;
652
- var selectedPair = '';
653
- var bitRate = 0;
654
-
655
- /* Set defaults */
656
- vqPayload.maxJitter = 0;
657
- vqPayload.VoPktSizeMs = 20;
658
-
659
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
660
- stats.forEach(function (report) {
661
- (0, _keys.default)(report).forEach(function (statName) {
662
- if (statName !== _constants.TIMESTAMP) {
663
- if (!type || statName === _constants.TYPE) {
664
- type = report[statName];
665
- } else if (!id || statName === _constants.MEDIA_ID) {
666
- id = report[statName];
667
- } else if (id && id.indexOf(_constants.RTC_ICE_CANDIDATE_PAIR) !== -1) {
668
- if (statName === _constants.LOCAL_CANDIDATE_ID) {
669
- candidatePairs[id] = report[statName];
670
- }
671
- } else if (id && id.indexOf(_constants.RTC_ICE_CANDIDATE) !== -1) {
672
- if (statName === _constants.NETWORK_TYPE) {
673
- localCandidates[id] = report[statName];
674
- }
675
- } else if (id && (id.indexOf(_constants.INBOUND_CODEC_MATCH) !== -1 || id.indexOf(_constants.OUTBOUND_CODEC_MATCH) !== -1 || id.indexOf(_constants.RTC_CODEC) !== -1)) {
676
- if (statName === _constants.MIME_TYPE) {
677
- codecList[id] = report[statName];
678
- }
679
- } else if (type && type === _constants.REMOTE_INBOUND_RTP) {
680
- switch (statName) {
681
- case _constants.TOTAL_ROUND_TRIP_TIME:
682
- {
683
- totalRoundTripTime = report[statName];
684
- break;
685
- }
686
- case _constants.ROUND_TRIP_TIME_MEASUREMENTS:
687
- {
688
- roundTripTimeMeasurements = report[statName];
689
- break;
690
- }
691
- default:
692
- {
693
- // We don't care about the other stats
694
- }
695
- }
696
- } else if (type && type === _constants.INBOUND_RTP) {
697
- switch (statName) {
698
- case _constants.CODEC_ID:
699
- {
700
- inboundCodec = report[statName];
701
- break;
702
- }
703
- case _constants.PACKETS_RECEIVED:
704
- {
705
- rxStat.Pkt = report[statName];
706
- break;
707
- }
708
- case _constants.BYTES_RECEIVED:
709
- {
710
- rxStat.Oct = report[statName];
711
- break;
712
- }
713
- case _constants.PACKETS_DISCARDED:
714
- {
715
- rxStat.LatePkt = report[statName];
716
- break;
717
- }
718
- case _constants.PACKETS_LOST:
719
- {
720
- rxStat.LostPkt = report[statName];
721
- break;
722
- }
723
- case _constants.JITTER_BUFFER_DELAY:
724
- {
725
- jitterBufferDelay = report[statName];
726
- break;
727
- }
728
- case _constants.JITTER_BUFFER_EMITTED_COUNT:
729
- {
730
- jitterBufferEmittedCount = report[statName];
731
- break;
732
- }
733
- default:
734
- {
735
- // We don't care about the other stats
736
- }
737
- }
738
- } else if (type && type === _constants.TRANSPORT) {
739
- switch (statName) {
740
- case _constants.SELECTED_CANDIDATE_PAIR_ID:
741
- {
742
- selectedPair = report[statName];
743
- break;
744
- }
745
- default:
746
- {
747
- // We don't care about the other stats
748
- }
749
- }
750
- } else if (type && type === _constants.OUTBOUND_RTP) {
751
- switch (statName) {
752
- case _constants.CODEC_ID:
753
- {
754
- outboundCodec = report[statName];
755
- break;
756
- }
757
- case _constants.PACKETS_SENT:
758
- {
759
- txStat.Pkt = report[statName];
760
- break;
761
- }
762
- case _constants.BYTES_SENT:
763
- {
764
- txStat.Oct = report[statName];
765
- break;
766
- }
767
- case _constants.TARGET_BIT_RATE:
768
- {
769
- bitRate = report[statName];
770
- break;
771
- }
772
- default:
773
- {
774
- // We don't care about the other stats
775
- }
776
- }
777
- } else if (type && type === _constants.MEDIA_SOURCE) {
778
- switch (statName) {
779
- case _constants.TOTAL_SAMPLES_DURATION:
780
- {
781
- rxStat.Dur = report[statName];
782
- txStat.Dur = report[statName];
783
- break;
784
- }
785
- default:
786
- {
787
- // We don't care about the other stats
788
- }
789
- }
790
- }
791
- }
792
- });
793
- });
794
-
795
- /* One way Delay */
796
- if (roundTripTimeMeasurements !== 0) {
797
- vqPayload.VoOneWayDelayMs = totalRoundTripTime / (2 * roundTripTimeMeasurements);
798
- } else {
799
- vqPayload.VoOneWayDelayMs = 0;
800
- }
801
- /* Application type */
802
- vqPayload.hwType = "".concat(platform.os, "/").concat(platform.name, "-").concat(platform.version);
803
-
804
- /* Network type */
805
- vqPayload.networkType = localCandidates[candidatePairs[selectedPair]];
806
-
807
- /* Average Jitter */
808
- rxStat.AvgJit = jitterBufferDelay / jitterBufferEmittedCount;
809
-
810
- /* Update codec */
811
- // eslint-disable-next-line prefer-destructuring
812
- vqPayload.VoRxCodec = codecList[inboundCodec].split('/')[1];
813
- var txVqPayload = {};
814
-
815
- // eslint-disable-next-line prefer-destructuring
816
- txVqPayload.VoTxCodec = codecList[outboundCodec].split('/')[1];
817
- txVqPayload.rtpBitRate = bitRate;
818
- var byeStats = {};
819
- rxStat.VQMetrics = vqPayload;
820
- txStat.VQMetrics = txVqPayload;
821
- byeStats[_constants.RTP_RX_STAT] = rxStat;
822
- byeStats[_constants.RTP_TX_STAT] = txStat;
823
- _Logger.default.log((0, _stringify.default)(byeStats), {
824
- file: _constants.UTILS_FILE,
825
- method: 'parseMediaQualityStatistics'
826
- });
827
- return byeStats;
828
- } catch (err) {
829
- _Logger.default.warn("Caught error while parsing RTP stats, ".concat(err), {
830
- file: _constants.UTILS_FILE,
831
- method: 'parseMediaQualityStatistics'
832
- });
833
- return _constants.DUMMY_METRICS;
834
- }
835
- }
836
-
837
- /**
838
- * To simulate delays.
839
- *
840
- * @param msec - Amount of delay.
841
- * @returns - Promise.
842
- */
843
- var waitForMsecs = exports.waitForMsecs = function waitForMsecs(msec) {
844
- return new _promise.default(function (resolve) {
845
- setTimeout(resolve, msec);
846
- });
847
- };
848
-
849
- /**
850
- * Register calling backend.
851
- *
852
- * @param webex -.
853
- * @returns CallingBackEnd.
854
- */
855
- function getCallingBackEnd(webex) {
856
- var entModels = webex.internal.device.features.entitlement.models;
857
- var callingBackend;
858
- if (webex.internal.device.callingBehavior === _constants2.NATIVE_WEBEX_TEAMS_CALLING) {
859
- for (var i = 0; i < entModels.length; i += 1) {
860
- if (entModels[i][_constants2.VALUES][_constants2.KEY] === _constants2.ENTITLEMENT_BASIC || entModels[i][_constants2.VALUES][_constants2.KEY] === _constants2.ENTITLEMENT_STANDARD) {
861
- callingBackend = _types3.CALLING_BACKEND.WXC;
862
- break;
863
- } else if (entModels[i][_constants2.VALUES][_constants2.KEY] === _constants2.ENTITLEMENT_BROADWORKS_CONN) {
864
- callingBackend = _types3.CALLING_BACKEND.BWRKS;
865
- break;
866
- }
867
- }
868
- } else if (webex.internal.device.callingBehavior === _constants2.NATIVE_SIP_CALL_TO_UCM) {
869
- callingBackend = _types3.CALLING_BACKEND.UCM;
870
- } else {
871
- callingBackend = _types3.CALLING_BACKEND.INVALID;
872
- }
873
- return callingBackend;
874
- }
875
-
876
- /**
877
- * Register XSI endpoint based on calling backend.
878
- *
879
- * @param webex -.
880
- * @param loggerContext -.
881
- * @param callingBackend -.
882
- * @returns Promise.
883
- */
884
- function getXsiActionEndpoint(_x16, _x17, _x18) {
885
- return _getXsiActionEndpoint.apply(this, arguments);
886
- }
887
- /**
888
- * Get sorted VoicemailList based on sort order passed.
889
- *
890
- * @param webex - Webex object to get service urls.
891
- * @param callingBackend - CallingBackend will have info like UCM.
892
- * @returns VGEndpointUrl.
893
- */
894
- function _getXsiActionEndpoint() {
895
- _getXsiActionEndpoint = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5(webex, loggerContext, callingBackend) {
896
- var _userIdResponse$heade, userIdResponse, response, xsiEndpoint, _bwTokenResponse$head, bwTokenResponse, _response, _xsiEndpoint, xsiUrl, errorInfo;
897
- return _regenerator.default.wrap(function _callee5$(_context5) {
898
- while (1) switch (_context5.prev = _context5.next) {
899
- case 0:
900
- _context5.prev = 0;
901
- _context5.t0 = callingBackend;
902
- _context5.next = _context5.t0 === _types3.CALLING_BACKEND.WXC ? 4 : _context5.t0 === _types3.CALLING_BACKEND.BWRKS ? 11 : 20;
903
- break;
904
- case 4:
905
- _context5.next = 6;
906
- return webex.request({
907
- uri: "".concat(webex.internal.services._serviceUrls.hydra, "/").concat(_constants2.XSI_ACTION_ENDPOINT_ORG_URL_PARAM),
908
- method: _types3.HTTP_METHODS.GET
909
- });
910
- case 6:
911
- userIdResponse = _context5.sent;
912
- _Logger.default.log("Response code: ".concat(userIdResponse.statusCode, ", Response trackingid: ").concat(userIdResponse === null || userIdResponse === void 0 ? void 0 : (_userIdResponse$heade = userIdResponse.headers) === null || _userIdResponse$heade === void 0 ? void 0 : _userIdResponse$heade.trackingid), {
913
- file: _constants.UTILS_FILE,
914
- method: 'getXsiActionEndpoint'
915
- });
916
- response = userIdResponse.body;
917
- xsiEndpoint = response[_constants2.ITEMS][0][_constants2.XSI_ACTION_ENDPOINT];
918
- return _context5.abrupt("return", xsiEndpoint);
919
- case 11:
920
- _context5.next = 13;
921
- return webex.request({
922
- uri: "".concat(webex.internal.services._serviceUrls.wdm, "/").concat(_constants2.DEVICES),
923
- method: _types3.HTTP_METHODS.GET
924
- });
925
- case 13:
926
- bwTokenResponse = _context5.sent;
927
- _Logger.default.log("Response code: ".concat(bwTokenResponse.statusCode, ", Response trackingid: ").concat(bwTokenResponse === null || bwTokenResponse === void 0 ? void 0 : (_bwTokenResponse$head = bwTokenResponse.headers) === null || _bwTokenResponse$head === void 0 ? void 0 : _bwTokenResponse$head.trackingid), {
928
- file: _constants.UTILS_FILE,
929
- method: 'getXsiActionEndpoint'
930
- });
931
- _response = bwTokenResponse.body;
932
- _xsiEndpoint = _response[_constants2.DEVICES][0][_constants2.SETTINGS][_constants2.BW_XSI_URL];
933
- xsiUrl = _response[_constants2.DEVICES][0][_constants2.SETTINGS][_constants2.BW_XSI_URL]; // Check if it ends with specific version and slice accordingly
934
- if (xsiUrl.endsWith(_constants2.BW_XSI_ENDPOINT_VERSION)) {
935
- _xsiEndpoint = xsiUrl.slice(0, -5); // Remove 'v2.0'
936
- } else if (xsiUrl.endsWith(_constants2.BW_XSI_ENDPOINT_VERSION_WITH_SLASH)) {
937
- _xsiEndpoint = xsiUrl.slice(0, -6); // Remove 'v2.0/'
938
- }
939
- return _context5.abrupt("return", _xsiEndpoint);
940
- case 20:
941
- throw new Error('Calling backend is not identified, exiting....');
942
- case 21:
943
- _context5.next = 28;
944
- break;
945
- case 23:
946
- _context5.prev = 23;
947
- _context5.t1 = _context5["catch"](0);
948
- errorInfo = _context5.t1;
949
- serviceErrorCodeHandler(errorInfo, loggerContext);
950
- return _context5.abrupt("return", errorInfo);
951
- case 28:
952
- case "end":
953
- return _context5.stop();
954
- }
955
- }, _callee5, null, [[0, 23]]);
956
- }));
957
- return _getXsiActionEndpoint.apply(this, arguments);
958
- }
959
- function getVgActionEndpoint(webex, callingBackend) {
960
- try {
961
- if (callingBackend && callingBackend === _types3.CALLING_BACKEND.UCM) {
962
- return webex.internal.services._serviceUrls['ucmgmt-gateway'];
963
- }
964
- throw new Error('Calling backend is not identified, exiting....');
965
- } catch (err) {
966
- var errorInfo = err;
967
- return errorInfo;
968
- }
969
- }
970
-
971
- /**
972
- * Get sorted VoiceMailList based on sort order passed.
973
- *
974
- * @param voiceMessageList - List of voicemessage.
975
- * @param sortOrder - Type of sort either ascending or descending.
976
- * @returns Sorted voicemessageList .
977
- */
978
- function getSortedVoicemailList(voiceMessageList, sortOrder) {
979
- /* istanbul ignore else */
980
- if (sortOrder === _types3.SORT.DESC) {
981
- voiceMessageList.sort(function (voiceMail, nextVoiceMail) {
982
- return nextVoiceMail[_constants2.TIME][_constants2.PLACEHOLDER_KEY] - voiceMail[_constants2.TIME][_constants2.PLACEHOLDER_KEY];
983
- });
984
- } else if (sortOrder === _types3.SORT.ASC) {
985
- voiceMessageList.sort(function (voiceMail, nextVoiceMail) {
986
- return voiceMail[_constants2.TIME][_constants2.PLACEHOLDER_KEY] - nextVoiceMail[_constants2.TIME][_constants2.PLACEHOLDER_KEY];
987
- });
988
- }
989
- return voiceMessageList;
990
- }
991
-
992
- /**
993
- * Handler to perform a SCIM Query.
994
- *
995
- * @param filter - A filter for the query.
996
- * @returns - Promise.
997
- */
998
- function scimQuery(_x19) {
999
- return _scimQuery.apply(this, arguments);
1000
- }
1001
- /**
1002
- * Resolve Caller Id display information using SCIM query.
1003
- *
1004
- * @param filter - CI userId.
1005
- */
1006
- function _scimQuery() {
1007
- _scimQuery = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6(filter) {
1008
- var _response$headers;
1009
- var sdkConnector, webex, isProd, webexHost, scimUrl, query, response;
1010
- return _regenerator.default.wrap(function _callee6$(_context6) {
1011
- while (1) switch (_context6.prev = _context6.next) {
1012
- case 0:
1013
- _Logger.default.info("Starting resolution for filter:- ".concat(filter), {
1014
- file: _constants.UTILS_FILE,
1015
- method: 'scimQuery'
1016
- });
1017
- sdkConnector = _SDKConnector.default;
1018
- webex = sdkConnector.getWebex();
1019
- isProd = !webex.internal.device.url.includes('-int');
1020
- webexHost = isProd ? _constants2.WEBEX_API_PROD : _constants2.WEBEX_API_BTS;
1021
- scimUrl = "".concat(webexHost, "/").concat(_constants2.IDENTITY_ENDPOINT_RESOURCE, "/").concat(_constants2.SCIM_ENDPOINT_RESOURCE, "/").concat(webex.internal.device.orgId, "/").concat(_constants2.SCIM_USER_FILTER);
1022
- query = scimUrl + encodeURIComponent(filter);
1023
- _context6.next = 9;
1024
- return webex.request({
1025
- uri: query,
1026
- method: _types3.HTTP_METHODS.GET,
1027
- headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants.CISCO_DEVICE_URL, webex.internal.device.url), _constants.SPARK_USER_AGENT, _constants.CALLING_USER_AGENT)
1028
- });
1029
- case 9:
1030
- response = _context6.sent;
1031
- _Logger.default.log("Response code: ".concat(response.statusCode, ", Response trackingid: ").concat(response === null || response === void 0 ? void 0 : (_response$headers = response.headers) === null || _response$headers === void 0 ? void 0 : _response$headers.trackingid), {
1032
- file: _constants.UTILS_FILE,
1033
- method: 'scimQuery'
1034
- });
1035
- return _context6.abrupt("return", response);
1036
- case 12:
1037
- case "end":
1038
- return _context6.stop();
1039
- }
1040
- }, _callee6);
1041
- }));
1042
- return _scimQuery.apply(this, arguments);
1043
- }
1044
- function resolveCallerIdDisplay(_x20) {
1045
- return _resolveCallerIdDisplay.apply(this, arguments);
1046
- }
1047
- /**
1048
- * Resolve contact info from display name, using people search API.
1049
- *
1050
- * @param name - Display name.
1051
- */
1052
- function _resolveCallerIdDisplay() {
1053
- _resolveCallerIdDisplay = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7(filter) {
1054
- var _resolution;
1055
- var resolution, displayResult, response, res, _scimResource$phoneNu, _scimResource$phoneNu2, _scimResource$photos, scimResource, numberObj, photo;
1056
- return _regenerator.default.wrap(function _callee7$(_context7) {
1057
- while (1) switch (_context7.prev = _context7.next) {
1058
- case 0:
1059
- displayResult = {};
1060
- _context7.prev = 1;
1061
- _context7.next = 4;
1062
- return scimQuery(filter);
1063
- case 4:
1064
- response = _context7.sent;
1065
- resolution = response.body;
1066
- _Logger.default.info("Number of records found for this user :- ".concat(resolution.totalResults), {
1067
- file: _constants.UTILS_FILE,
1068
- method: 'resolveCallerIdDisplay'
1069
- });
1070
- _context7.next = 13;
1071
- break;
1072
- case 9:
1073
- _context7.prev = 9;
1074
- _context7.t0 = _context7["catch"](1);
1075
- res = _context7.t0;
1076
- _Logger.default.warn("Error response: - ".concat(res.statusCode), {
1077
- file: _constants.UTILS_FILE,
1078
- method: 'resolveCallerIdDisplay'
1079
- });
1080
- case 13:
1081
- if ((_resolution = resolution) !== null && _resolution !== void 0 && _resolution.totalResults && resolution.totalResults > 0) {
1082
- /* Every user has single resource from what we have discussed. May need to revisit this later
1083
- * for shared-line use-cases.
1084
- */
1085
- scimResource = resolution.Resources[0];
1086
- displayResult.name = scimResource.displayName;
1087
-
1088
- /* Pick only the primary number OR 2nd preference Work */
1089
- numberObj = ((_scimResource$phoneNu = scimResource.phoneNumbers) === null || _scimResource$phoneNu === void 0 ? void 0 : _scimResource$phoneNu.find(function (num) {
1090
- return num.primary;
1091
- })) || ((_scimResource$phoneNu2 = scimResource.phoneNumbers) === null || _scimResource$phoneNu2 === void 0 ? void 0 : _scimResource$phoneNu2.find(function (num) {
1092
- return num.type.toLowerCase() === 'work';
1093
- }));
1094
- if (numberObj) {
1095
- displayResult.num = numberObj.value;
1096
- } else if (scimResource.phoneNumbers && scimResource.phoneNumbers.length > 0) {
1097
- /* When no primary number exists OR PA-ID/From failed to populate, we take the first number */
1098
- _Logger.default.info('Failure to resolve caller information. Setting number as caller ID', {
1099
- file: _constants.UTILS_FILE,
1100
- method: 'resolveCallerIdDisplay'
1101
- });
1102
- displayResult.num = scimResource.phoneNumbers[0].value;
1103
- }
1104
-
1105
- /* For Webapp, we are only picking thumbnail photo */
1106
- photo = (_scimResource$photos = scimResource.photos) === null || _scimResource$photos === void 0 ? void 0 : _scimResource$photos.find(function (photo) {
1107
- return photo.type === 'thumbnail';
1108
- });
1109
- displayResult.avatarSrc = photo ? photo.value : 'unknown';
1110
- displayResult.id = scimResource.id;
1111
- }
1112
- return _context7.abrupt("return", displayResult);
1113
- case 15:
1114
- case "end":
1115
- return _context7.stop();
1116
- }
1117
- }, _callee7, null, [[1, 9]]);
1118
- }));
1119
- return _resolveCallerIdDisplay.apply(this, arguments);
1120
- }
1121
- function resolveCallerIdByName(_x21) {
1122
- return _resolveCallerIdByName.apply(this, arguments);
1123
- }
1124
- /**
1125
- * Resolve the contact information.
1126
- *
1127
- * @param callingPartyInfo - Calling Party Info.
1128
- */
1129
- function _resolveCallerIdByName() {
1130
- _resolveCallerIdByName = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8(name) {
1131
- var displayResult, sdkConnector, webex, searchDirectory;
1132
- return _regenerator.default.wrap(function _callee8$(_context8) {
1133
- while (1) switch (_context8.prev = _context8.next) {
1134
- case 0:
1135
- displayResult = {};
1136
- sdkConnector = _SDKConnector.default;
1137
- webex = sdkConnector.getWebex();
1138
- /**
1139
- * @param query - Display name.
1140
- */
1141
- searchDirectory = function searchDirectory(query) {
1142
- return webex.people.list({
1143
- displayName: query
1144
- });
1145
- };
1146
- _context8.next = 6;
1147
- return searchDirectory(name).then(function (results) {
1148
- _Logger.default.info("DS Result: ".concat(results), {
1149
- file: _constants.UTILS_FILE,
1150
- method: 'resolveCallerIdByName'
1151
- });
1152
- if (results && results.items && results.items.length > 0) {
1153
- var resolution = results.items[0];
1154
- displayResult.name = resolution.displayName;
1155
-
1156
- /* id is like cisco spark://us/PEOPLE/b853bbd1-1136-4d25-938d-0c37541b1234
1157
- * We need to extract UUID portion. */
1158
- var id = Buffer.from(resolution.id, 'base64').toString('binary');
1159
- displayResult.id = id.split('/').pop();
1160
- var numObj = resolution.phoneNumbers.find(function (num) {
1161
- return num.type === 'work';
1162
- });
1163
- if (numObj) {
1164
- displayResult.num = numObj.value;
1165
- } else if (resolution.phoneNumbers.length > 0) {
1166
- displayResult.num = resolution.phoneNumbers[0].value;
1167
- }
1168
- displayResult.avatarSrc = resolution.avatar;
1169
- _Logger.default.info("Extracted details:- name: ".concat(displayResult.name, " , number: ").concat(displayResult.num, ", photo: ").concat(displayResult.avatarSrc, ", id: ").concat(displayResult.id), {
1170
- file: _constants.UTILS_FILE,
1171
- method: 'resolveCallerIdByName'
1172
- });
1173
- }
1174
- });
1175
- case 6:
1176
- return _context8.abrupt("return", displayResult);
1177
- case 7:
1178
- case "end":
1179
- return _context8.stop();
1180
- }
1181
- }, _callee8);
1182
- }));
1183
- return _resolveCallerIdByName.apply(this, arguments);
1184
- }
1185
- function resolveContact(_x22) {
1186
- return _resolveContact.apply(this, arguments);
1187
- }
1188
- /**
1189
- * Store encrypted voicemailList in SessionStorage.
1190
- *
1191
- * @param context - Context for storage.
1192
- * @param voiceMessageList - List of voicemessage.
1193
- */
1194
- function _resolveContact() {
1195
- _resolveContact = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee9(callingPartyInfo) {
1196
- return _regenerator.default.wrap(function _callee9$(_context9) {
1197
- while (1) switch (_context9.prev = _context9.next) {
1198
- case 0:
1199
- if (!(callingPartyInfo.userExternalId && callingPartyInfo.userExternalId.$)) {
1200
- _context9.next = 2;
1201
- break;
1202
- }
1203
- return _context9.abrupt("return", resolveCallerIdDisplay("id eq \"".concat(callingPartyInfo.userExternalId.$, "\"")));
1204
- case 2:
1205
- if (!(callingPartyInfo.name && callingPartyInfo.name.$)) {
1206
- _context9.next = 4;
1207
- break;
1208
- }
1209
- return _context9.abrupt("return", resolveCallerIdByName(callingPartyInfo.name.$));
1210
- case 4:
1211
- return _context9.abrupt("return", null);
1212
- case 5:
1213
- case "end":
1214
- return _context9.stop();
1215
- }
1216
- }, _callee9);
1217
- }));
1218
- return _resolveContact.apply(this, arguments);
1219
- }
1220
- function storeVoicemailList(context, voiceMessageList) {
1221
- var vmEncodedList = Buffer.from((0, _stringify.default)(voiceMessageList), 'utf8').toString('base64');
1222
- sessionStorage.setItem(context, vmEncodedList.toString());
1223
- }
1224
-
1225
- /**
1226
- * Fetch decrypted voicemailList from SessionStorage.
1227
- *
1228
- * @param context - Context for the storage.
1229
- * @param offset - Number of voicemail records to skip.
1230
- * @param offsetLimit - Number of voicemail list to fetch from the offset.
1231
- * @param loggerContext - File, method name object.
1232
- * @returns - Array containing voicemails and flag to indicate availability of more voicemails.
1233
- */
1234
- function fetchVoicemailList(context, offset, offsetLimit, loggerContext) {
1235
- var moreVoicemails = false;
1236
- var requiredVoicemailList = [];
1237
- try {
1238
- var voicemailList = JSON.parse(Buffer.from(sessionStorage.getItem(context), 'base64').toString('utf8'));
1239
- _Logger.default.info("Length of voicemail list: ".concat(voicemailList.length), loggerContext);
1240
- if (voicemailList.length > offset + offsetLimit) {
1241
- moreVoicemails = true;
1242
- }
1243
- requiredVoicemailList = voicemailList.slice(offset, offset + offsetLimit);
1244
- } catch (err) {
1245
- _Logger.default.warn("Caught exception while fetching voicemail from storage. ".concat(err), loggerContext);
1246
- var errorInfo = err;
1247
- serviceErrorCodeHandler(errorInfo, {});
1248
- }
1249
- return {
1250
- messages: requiredVoicemailList,
1251
- moreVMAvailable: moreVoicemails
1252
- };
1253
- }
1254
-
1255
- /**
1256
- * Converts a uuid to a hydra id without a network dip.
1257
- *
1258
- * @param id - ID to be encoded to base64.
1259
- * @param decodeType - DecodeType.
1260
- * @returns - Encoded string value.
1261
- */
1262
- function inferIdFromUuid(id, decodeType) {
1263
- return Buffer.from("".concat(_constants2.INFER_ID_CONSTANT, "/").concat(decodeType, "/").concat(id), 'binary').toString('base64');
1264
- }
1265
-
1266
- /**
1267
- * Validates service indicator.
1268
- *
1269
- * @param indicator - Must match with one of the values in ServiceIndicator enum.
1270
- * @returns True if validation is successful else false.
1271
- */
1272
- function isValidServiceIndicator(indicator) {
1273
- return (0, _values.default)(_types3.ServiceIndicator).some(function (v) {
1274
- return v === indicator;
1275
- });
1276
- }
1277
-
1278
- /**
1279
- * Validates domain field in input service data object.
1280
- * Domain value must be in valid domain format for service
1281
- * type contactcenter.
1282
- * But for service type calling it's allowed to be empty or
1283
- * undefined however if it's not empty/undefined for service
1284
- * type calling then even that will be validated to see if it
1285
- * is in valid domain format.
1286
- *
1287
- * @param serviceData - .
1288
- * @returns True if validation is successful else false.
1289
- */
1290
- function isValidServiceDomain(serviceData) {
1291
- var regexp = /^[a-z0-9]+([-.]{1}[a-z0-9]+)*\.[a-z]{2,6}$/i;
1292
- var domain = serviceData.domain;
1293
- if (!domain) {
1294
- return serviceData.indicator === _types3.ServiceIndicator.CALLING || serviceData.indicator === _types3.ServiceIndicator.GUEST_CALLING;
1295
- }
1296
- return regexp.test(domain);
1297
- }
1298
-
1299
- /**
1300
- * Validates service data object(indicator & domain) and throws
1301
- * exception with a message indicating the reason for validation
1302
- * failure.
1303
- *
1304
- * @param serviceData - Input service data to be validated.
1305
- */
1306
- function validateServiceData(serviceData) {
1307
- var allowedValues = (0, _values.default)(_types3.ServiceIndicator);
1308
- var formattedValues = allowedValues.join(', ').replace(/,([^,]*)$/, ' and$1');
1309
- if (!isValidServiceIndicator(serviceData.indicator)) {
1310
- throw new Error("Invalid service indicator, Allowed values are: ".concat(formattedValues));
1311
- }
1312
- if (!isValidServiceDomain(serviceData)) {
1313
- throw new Error('Invalid service domain.');
1314
- }
1315
- }
1316
-
1317
- /**
1318
- * Modifies SDP to replace IPv6 "c=" lines with IPv4.And adds an IPv4 candidate if none exists.
1319
- *
1320
- * @param sdp - Session Description Protocol string.
1321
- * @returns Modified SDP string.
1322
- */
1323
- function modifySdpForIPv4(sdp) {
1324
- try {
1325
- // Normalize line endings to avoid issues
1326
- sdp = sdp.replace(/\r\n|\r/g, '\n');
1327
-
1328
- // Ensure consistent spacing without removing intentional indentation
1329
- sdp = sdp.replace(/^[ \t]+/gm, '');
1330
-
1331
- // Check if at least one IPv6 "c=" line is present
1332
- var ipv6CLineMatches = sdp.match(/c=IN IP6 [\da-f:.]+/gi) || [];
1333
- var hasIPv6CLine = ipv6CLineMatches.length > 0;
1334
- if (hasIPv6CLine) {
1335
- _Logger.default.info('Modifying SDP for IPv4 compatibility', {
1336
- file: _constants.UTILS_FILE,
1337
- method: 'modifySdpForIPv4'
1338
- });
1339
-
1340
- // Extract an existing IPv4 candidate's IP, if available
1341
- var ipv4CandidateMatch = sdp.match(/a=candidate:\d+ \d+ \w+ \d+ ([\d.]+) \d+ typ \w+/);
1342
- var ipv4Address = (ipv4CandidateMatch === null || ipv4CandidateMatch === void 0 ? void 0 : ipv4CandidateMatch[1]) || '192.1.1.1'; // Default fallback
1343
-
1344
- // Replace all IPv6 "c=" lines with IPv4 using the extracted IP (or default)
1345
- sdp = sdp.replace(/c=IN IP6 [\da-f:.]+/gi, "c=IN IP4 ".concat(ipv4Address));
1346
-
1347
- // Ensure newline separation between candidate lines
1348
- if (!ipv4CandidateMatch) {
1349
- var ipv4CandidateAdded = false;
1350
- sdp = sdp.replace(/(a=candidate:(\d+) (\d+) (\w+) (\d+) ([\da-f:.]+) (\d+) typ (\w+)[^\n]*)/g, function (match, full, foundation, componentId, transport, priority, connectionAddress, port, candidateType) {
1351
- if (!ipv4CandidateAdded && connectionAddress.includes(':')) {
1352
- // Ensure it's IPv6 and only add once
1353
- ipv4CandidateAdded = true;
1354
- var newFoundation = ((0, _parseInt2.default)(foundation, 10) + 1).toString();
1355
- return "".concat(full, "\n") + "a=candidate:".concat(newFoundation, " ").concat(componentId, " ").concat(transport, " ").concat(priority, " ").concat(ipv4Address, " ").concat(port, " typ ").concat(candidateType, " generation 0 network-id 1 network-cost 10");
1356
- }
1357
- return match;
1358
- });
1359
- }
1360
- }
1361
- return sdp;
1362
- } catch (error) {
1363
- _Logger.default.warn("Error modifying SDP for IPv4 compatibility: ".concat(error), {
1364
- file: _constants.UTILS_FILE,
1365
- method: 'modifySdpForIPv4'
1366
- });
1367
- return sdp; // Return original SDP in case of an error
1368
- }
1369
- }
1370
-
1371
- /**
1372
- * Uploads logs to backend.
1373
- *
1374
- * @param metaData - Metadata to be uploaded.
1375
- * @param throwError - Whether to throw exception on failure (default: false).
1376
- * @returns Promise containing upload response if successful.
1377
- */
1378
- function uploadLogs() {
1379
- return _uploadLogs.apply(this, arguments);
1380
- }
1381
- function _uploadLogs() {
1382
- _uploadLogs = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0() {
1383
- var metaData,
1384
- throwError,
1385
- webex,
1386
- feedbackId,
1387
- response,
1388
- errorLog,
1389
- _args0 = arguments;
1390
- return _regenerator.default.wrap(function _callee0$(_context0) {
1391
- while (1) switch (_context0.prev = _context0.next) {
1392
- case 0:
1393
- metaData = _args0.length > 0 && _args0[0] !== undefined ? _args0[0] : {};
1394
- throwError = _args0.length > 1 && _args0[1] !== undefined ? _args0[1] : false;
1395
- webex = _SDKConnector.default.getWebex(); // const feedbackId = crypto.randomUUID();
1396
- feedbackId = (0, _uuid.v4)();
1397
- _context0.prev = 4;
1398
- _context0.next = 7;
1399
- return webex.internal.support.submitLogs(_objectSpread(_objectSpread({}, metaData), {}, {
1400
- feedbackId: feedbackId
1401
- }), undefined,
1402
- // we dont send logs but take from webex logger
1403
- {
1404
- type: 'diff'
1405
- } // this is to take the diff logs from previous upload
1406
- );
1407
- case 7:
1408
- response = _context0.sent;
1409
- _Logger.default.info("Logs uploaded successfully with feedbackId: ".concat(feedbackId), {
1410
- file: _constants.UTILS_FILE,
1411
- method: 'uploadLogs'
1412
- });
1413
- (0, _Metrics.getMetricManager)().submitUploadLogsMetric(_types.METRIC_EVENT.UPLOAD_LOGS_SUCCESS, _types.UPLOAD_LOGS_ACTION, _types.METRIC_TYPE.BEHAVIORAL, response === null || response === void 0 ? void 0 : response.trackingid, feedbackId, metaData === null || metaData === void 0 ? void 0 : metaData.correlationId, undefined, metaData === null || metaData === void 0 ? void 0 : metaData.callId, metaData === null || metaData === void 0 ? void 0 : metaData.broadworksCorrelationInfo);
1414
- return _context0.abrupt("return", _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
1415
- trackingid: response.trackingid
1416
- }, response.url ? {
1417
- url: response.url
1418
- } : {}), response.userId ? {
1419
- userId: response.userId
1420
- } : {}), response.correlationId ? {
1421
- correlationId: response.correlationId
1422
- } : {}), metaData !== null && metaData !== void 0 && metaData.broadworksCorrelationInfo ? {
1423
- broadworksCorrelationInfo: metaData === null || metaData === void 0 ? void 0 : metaData.broadworksCorrelationInfo
1424
- } : {}), {}, {
1425
- feedbackId: feedbackId
1426
- }));
1427
- case 13:
1428
- _context0.prev = 13;
1429
- _context0.t0 = _context0["catch"](4);
1430
- errorLog = new Error("Failed to upload Logs ".concat(_context0.t0));
1431
- _Logger.default.error(errorLog, {
1432
- file: _constants.UTILS_FILE,
1433
- method: 'uploadLogs'
1434
- });
1435
- (0, _Metrics.getMetricManager)().submitUploadLogsMetric(_types.METRIC_EVENT.UPLOAD_LOGS_FAILED, _types.UPLOAD_LOGS_ACTION, _types.METRIC_TYPE.BEHAVIORAL, undefined, feedbackId, metaData === null || metaData === void 0 ? void 0 : metaData.correlationId, errorLog.message, metaData === null || metaData === void 0 ? void 0 : metaData.callId, metaData === null || metaData === void 0 ? void 0 : metaData.broadworksCorrelationInfo);
1436
- if (!throwError) {
1437
- _context0.next = 20;
1438
- break;
1439
- }
1440
- throw _context0.t0;
1441
- case 20:
1442
- return _context0.abrupt("return", undefined);
1443
- case 21:
1444
- case "end":
1445
- return _context0.stop();
1446
- }
1447
- }, _callee0, null, [[4, 13]]);
1448
- }));
1449
- return _uploadLogs.apply(this, arguments);
1450
- }
1451
- //# sourceMappingURL=Utils.js.map