@webex/calling 3.10.0-next.1 → 3.10.0-next.10
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.
- package/dist/CallHistory/CallHistory.js +26 -20
- package/dist/CallHistory/CallHistory.js.map +1 -1
- package/dist/CallHistory/CallHistory.test.js +109 -0
- package/dist/CallHistory/CallHistory.test.js.map +1 -1
- package/dist/CallSettings/WxCallBackendConnector.js +2 -1
- package/dist/CallSettings/WxCallBackendConnector.js.map +1 -1
- package/dist/CallingClient/CallingClient.js +160 -205
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +152 -290
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/call.js +14 -14
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +348 -258
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/Contacts/ContactsClient.js +8 -5
- package/dist/Contacts/ContactsClient.js.map +1 -1
- package/dist/Events/impl/index.js +1 -2
- package/dist/Events/impl/index.js.map +1 -1
- package/dist/SDKConnector/types.js.map +1 -1
- package/dist/Voicemail/BroadworksBackendConnector.js +14 -12
- package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -1
- package/dist/Voicemail/UcmBackendConnector.js +2 -1
- package/dist/Voicemail/UcmBackendConnector.js.map +1 -1
- package/dist/common/testUtil.js +2 -1
- package/dist/common/testUtil.js.map +1 -1
- package/dist/module/CallHistory/CallHistory.js +7 -3
- package/dist/module/CallSettings/WxCallBackendConnector.js +3 -1
- package/dist/module/CallingClient/CallingClient.js +83 -121
- package/dist/module/CallingClient/calling/call.js +5 -5
- package/dist/module/Contacts/ContactsClient.js +9 -5
- package/dist/module/Events/impl/index.js +1 -2
- package/dist/module/Voicemail/BroadworksBackendConnector.js +3 -1
- package/dist/module/Voicemail/UcmBackendConnector.js +2 -1
- package/dist/module/common/testUtil.js +1 -0
- package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
- package/dist/types/CallSettings/WxCallBackendConnector.d.ts.map +1 -1
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/Contacts/ContactsClient.d.ts +1 -0
- package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
- package/dist/types/Events/impl/index.d.ts.map +1 -1
- package/dist/types/SDKConnector/types.d.ts +10 -0
- package/dist/types/SDKConnector/types.d.ts.map +1 -1
- package/dist/types/Voicemail/BroadworksBackendConnector.d.ts.map +1 -1
- package/dist/types/Voicemail/UcmBackendConnector.d.ts.map +1 -1
- package/dist/types/common/testUtil.d.ts +1 -0
- package/dist/types/common/testUtil.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -47,6 +47,7 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
|
|
|
47
47
|
* @ignore
|
|
48
48
|
*/
|
|
49
49
|
function ContactsClient(webex, logger) {
|
|
50
|
+
var _this$webex$internal$;
|
|
50
51
|
(0, _classCallCheck2.default)(this, ContactsClient);
|
|
51
52
|
(0, _defineProperty2.default)(this, "sdkConnector", void 0);
|
|
52
53
|
(0, _defineProperty2.default)(this, "encryptionKeyUrl", void 0);
|
|
@@ -54,6 +55,7 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
|
|
|
54
55
|
(0, _defineProperty2.default)(this, "groups", void 0);
|
|
55
56
|
(0, _defineProperty2.default)(this, "contacts", void 0);
|
|
56
57
|
(0, _defineProperty2.default)(this, "defaultGroupId", void 0);
|
|
58
|
+
(0, _defineProperty2.default)(this, "contactsServiceUrl", void 0);
|
|
57
59
|
this.sdkConnector = _SDKConnector.default;
|
|
58
60
|
if (!this.sdkConnector.getWebex()) {
|
|
59
61
|
_SDKConnector.default.setWebex(webex);
|
|
@@ -63,6 +65,7 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
|
|
|
63
65
|
this.groups = undefined;
|
|
64
66
|
this.contacts = undefined;
|
|
65
67
|
this.defaultGroupId = '';
|
|
68
|
+
this.contactsServiceUrl = ((_this$webex$internal$ = this.webex.internal.services._serviceUrls) === null || _this$webex$internal$ === void 0 ? void 0 : _this$webex$internal$.contactsService) || this.webex.internal.services.get(this.webex.internal.services._activeServices.contactsService);
|
|
66
69
|
_Logger.default.setLogger(logger.level, _constants2.CONTACTS_CLIENT);
|
|
67
70
|
}
|
|
68
71
|
|
|
@@ -467,7 +470,7 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
|
|
|
467
470
|
_context1.next = 7;
|
|
468
471
|
return this.webex.request({
|
|
469
472
|
// eslint-disable-next-line no-underscore-dangle
|
|
470
|
-
uri: "".concat(this.
|
|
473
|
+
uri: "".concat(this.contactsServiceUrl, "/").concat(_constants2.ENCRYPT_FILTER, "/").concat(_constants2.USERS, "/").concat(_constants2.CONTACT_FILTER),
|
|
471
474
|
method: _types.HTTP_METHODS.GET
|
|
472
475
|
});
|
|
473
476
|
case 7:
|
|
@@ -877,7 +880,7 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
|
|
|
877
880
|
_context13.next = 23;
|
|
878
881
|
return this.webex.request({
|
|
879
882
|
// eslint-disable-next-line no-underscore-dangle
|
|
880
|
-
uri: "".concat(this.
|
|
883
|
+
uri: "".concat(this.contactsServiceUrl, "/").concat(_constants2.ENCRYPT_FILTER, "/").concat(_constants2.USERS, "/").concat(_constants2.GROUP_FILTER),
|
|
881
884
|
method: _types.HTTP_METHODS.POST,
|
|
882
885
|
body: groupInfo
|
|
883
886
|
});
|
|
@@ -940,7 +943,7 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
|
|
|
940
943
|
_context14.next = 6;
|
|
941
944
|
return this.webex.request({
|
|
942
945
|
// eslint-disable-next-line no-underscore-dangle
|
|
943
|
-
uri: "".concat(this.
|
|
946
|
+
uri: "".concat(this.contactsServiceUrl, "/").concat(_constants2.ENCRYPT_FILTER, "/").concat(_constants2.USERS, "/").concat(_constants2.GROUP_FILTER, "/").concat(groupId),
|
|
944
947
|
method: _types.HTTP_METHODS.DELETE
|
|
945
948
|
});
|
|
946
949
|
case 6:
|
|
@@ -1064,7 +1067,7 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
|
|
|
1064
1067
|
_context15.next = 33;
|
|
1065
1068
|
return this.webex.request({
|
|
1066
1069
|
// eslint-disable-next-line no-underscore-dangle
|
|
1067
|
-
uri: "".concat(this.
|
|
1070
|
+
uri: "".concat(this.contactsServiceUrl, "/").concat(_constants2.ENCRYPT_FILTER, "/").concat(_constants2.USERS, "/").concat(_constants2.CONTACT_FILTER),
|
|
1068
1071
|
method: _types.HTTP_METHODS.POST,
|
|
1069
1072
|
body: requestBody
|
|
1070
1073
|
});
|
|
@@ -1144,7 +1147,7 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
|
|
|
1144
1147
|
_context16.next = 6;
|
|
1145
1148
|
return this.webex.request({
|
|
1146
1149
|
// eslint-disable-next-line no-underscore-dangle
|
|
1147
|
-
uri: "".concat(this.
|
|
1150
|
+
uri: "".concat(this.contactsServiceUrl, "/").concat(_constants2.ENCRYPT_FILTER, "/").concat(_constants2.USERS, "/").concat(_constants2.CONTACT_FILTER, "/").concat(contactId),
|
|
1148
1151
|
method: _types.HTTP_METHODS.DELETE
|
|
1149
1152
|
});
|
|
1150
1153
|
case 6:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_constants","require","_types","_SDKConnector","_interopRequireDefault","_Logger","_constants2","_types2","_Utils","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","ContactsClient","exports","webex","logger","_classCallCheck2","sdkConnector","SDKConnector","getWebex","setWebex","encryptionKeyUrl","groups","undefined","contacts","defaultGroupId","log","setLogger","level","CONTACTS_CLIENT","_createClass2","key","value","_decryptContactDetail","_asyncToGenerator2","_regenerator","mark","_callee","contactDetails","_this","decryptedContactDetail","decryptedValues","wrap","_callee$","_context","prev","next","_toConsumableArray2","_promise","all","map","detail","internal","encryption","decryptText","sent","decryptedValue","index","abrupt","stop","decryptContactDetail","_x","_x2","_encryptContactDetail","_callee2","_this2","encryptedContactDetail","encryptedValues","_callee2$","_context2","encryptText","encryptedValue","encryptContactDetail","_x3","_x4","_encryptContact","_callee5","contact","_this3","encryptedContact","encryptionPromises","encryptedFieldsList","_callee5$","_context5","_values","encryptedFields","_ref","_callee4","field","plaintextAddressInfo","encryptedAddressInfo","encryptedAddressInfoPromises","plainTextDetails","encryptedDetails","_callee4$","_context4","t0","ADDRESS_INFO","EMAILS","PHONE_NUMBERS","SIP_ADDRESSES","addressInfo","_entries","_ref3","_callee3","_ref2","_ref4","_callee3$","_context3","_slicedToArray2","t1","_x7","t2","fromEntries","call","includes","_x6","_ref5","_ref6","encryptContact","_x5","_decryptContact","_callee8","_this4","decryptedContact","decryptionPromises","decryptedFieldsList","_callee8$","_context8","_ref7","_callee7","decryptedAddressInfo","decryptedAddressInfoPromises","decryptedDetails","_callee7$","_context7","_ref9","_callee6","_ref8","_ref0","_callee6$","_context6","_x0","_x9","_ref1","_ref10","decryptContact","_x8","resolveCloudContacts","contactsDataMap","inputList","loggerContext","file","method","finalContactList","resolvedList","Resources","item","id","isResolved","some","listItem","contactId","resolved","n","_filteredContact$name","_filteredContact$name2","_filteredContact$SCIM","_filteredContact$SCIM2","_filteredContact$SCIM3","filteredContact","displayName","emails","phoneNumbers","photos","sipAddresses","SCIM_WEBEXIDENTITY_USER","firstName","name","givenName","lastName","familyName","manager","SCIM_ENTERPRISE_USER","department","avatarURL","_contactsDataMap$inpu","contactType","avatarUrlDomain","ownerId","cloudContact","error","warn","_getContacts","_callee1","_this5","contactList","cloudContactsMap","_response$headers","response","responseBody","contactIdList","totalContacts","MAX_CONTACTS_PER_QUERY","i","contactIdListChunk","query","result","slicedCloudContactsMap","resolvedContacts","contactResponse","errorStatus","_callee1$","_context1","METHODS","GET_CONTACTS","info","METHOD_START_MESSAGE","request","uri","concat","services","_serviceUrls","contactsService","ENCRYPT_FILTER","USERS","CONTACT_FILTER","HTTP_METHODS","GET","statusCode","headers","trackingid","body","Error","_ref11","_callee9","_callee9$","_context9","ContactType","CUSTOM","CLOUD","_x1","_keys","slice","SCIM_ID_FILTER","join","OR","scimQuery","_ref12","_callee0","group","idx","_callee0$","_context0","_x10","_x11","Number","STATUS_CODE","data","message","SUCCESS_MESSAGE","_stringify","serviceErrorCodeHandler","uploadLogs","getContacts","_createNewEncryptionKeyUrl","_callee10","unboundedKeyUri","unboundedKeys","_callee10$","_context10","CREATE_NEW_ENCRYPTION_KEY_URL","kms","createUnboundKeys","count","createResource","keyUris","createNewEncryptionKeyUrl","_fetchEncryptionKeyUrl","_callee11","_response$data$group","_response$data$group2","_callee11$","_context11","FETCH_ENCRYPTION_KEY_URL","DEFAULT_GROUP_NAME","fetchEncryptionKeyUrl","createContactGroup","groupId","_fetchDefaultGroup","_callee12","_callee12$","_context12","FETCH_DEFAULT_GROUP","fetchDefaultGroup","_createContactGroup","_callee13","groupType","encryptionKeyUrlFinal","isExistingGroup","encryptedDisplayName","groupInfo","_response$headers2","_this$groups","_callee13$","_context13","CREATE_CONTACT_GROUP","find","FAILURE_MESSAGE","schemas","CONTACTS_SCHEMA","GroupType","NORMAL","GROUP_FILTER","POST","_x12","_x13","_x14","_deleteContactGroup","_callee14","_response$headers3","_this$groups2","_this$groups4","groupToDelete","_this$groups3","_callee14$","_context14","DELETE_CONTACT_GROUP","DELETE","findIndex","splice","deleteContactGroup","_x15","_createContact","_callee15","contactInfo","_response$headers4","requestBody","_encryptedContact","newContact","res","resolvedContact","_this$contacts","_this$contacts2","_callee15$","_context15","CREATE_CONTACT","createContact","_x16","_deleteContact","_callee16","_this$contacts3","contactToDelete","_this$contacts4","_callee16$","_context16","DELETE_CONTACT","deleteContact","_x17","getSDKConnector","createContactsClient"],"sources":["ContactsClient.ts"],"sourcesContent":["/* eslint-disable no-await-in-loop */\nimport {\n FAILURE_MESSAGE,\n METHOD_START_MESSAGE,\n SCIM_ENTERPRISE_USER,\n SCIM_WEBEXIDENTITY_USER,\n STATUS_CODE,\n SUCCESS_MESSAGE,\n} from '../common/constants';\nimport {HTTP_METHODS, WebexRequestPayload, ContactDetail, SCIMListResponse} from '../common/types';\nimport {LoggerInterface} from '../Voicemail/types';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport SDKConnector from '../SDKConnector';\n\nimport log from '../Logger';\nimport {\n CONTACTS_CLIENT,\n CONTACTS_SCHEMA,\n CONTACT_FILTER,\n DEFAULT_GROUP_NAME,\n ENCRYPT_FILTER,\n GROUP_FILTER,\n METHODS,\n OR,\n SCIM_ID_FILTER,\n USERS,\n encryptedFields,\n} from './constants';\nimport {\n Contact,\n ContactIdContactInfo,\n ContactList,\n ContactResponse,\n ContactType,\n IContacts,\n ContactGroup,\n GroupType,\n} from './types';\n\nimport {scimQuery, serviceErrorCodeHandler, uploadLogs} from '../common/Utils';\n\n/**\n * `ContactsClient` module is designed to offer a set of APIs for retrieving and updating contacts and groups from the contacts-service.\n *\n * This code snippet demonstrates how to create an instance of `ContactClient` using webex and logger.\n *\n * Example\n * ```javascript\n * const contactClient = createContactsClient(webex, logger);\n * ```\n */\nexport class ContactsClient implements IContacts {\n private sdkConnector: ISDKConnector;\n\n private encryptionKeyUrl: string;\n\n private webex: WebexSDK;\n\n private groups: ContactGroup[] | undefined;\n\n private contacts: Contact[] | undefined;\n\n private defaultGroupId: string;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, logger: LoggerInterface) {\n this.sdkConnector = SDKConnector;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n\n this.webex = this.sdkConnector.getWebex();\n\n this.encryptionKeyUrl = '';\n this.groups = undefined;\n this.contacts = undefined;\n this.defaultGroupId = '';\n\n log.setLogger(logger.level, CONTACTS_CLIENT);\n }\n\n /**\n * Decrypt emails, phoneNumbers, sipAddresses.\n */\n private async decryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const decryptedContactDetail = [...contactDetails];\n\n const decryptedValues = await Promise.all(\n decryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.decryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n decryptedValues.forEach((decryptedValue, index) => {\n decryptedContactDetail[index].value = decryptedValue;\n });\n\n return decryptedContactDetail;\n }\n\n /**\n * Encrypt emails, phoneNumbers, sipAddresses.\n *\n */\n private async encryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const encryptedContactDetail = [...contactDetails];\n\n const encryptedValues = await Promise.all(\n encryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.encryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n encryptedValues.forEach((encryptedValue, index) => {\n encryptedContactDetail[index].value = encryptedValue;\n });\n\n return encryptedContactDetail;\n }\n\n /**\n * Encrypts a given contact.\n */\n private async encryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const encryptedContact: Contact = {...contact};\n\n const encryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = encryptedContact.addressInfo;\n let encryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const encryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.encryptText(encryptionKeyUrl, value),\n ]\n );\n\n encryptedAddressInfo = Object.fromEntries(\n await Promise.all(encryptedAddressInfoPromises)\n );\n }\n\n return [field, encryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = encryptedContact[field];\n let encryptedDetails;\n\n if (plainTextDetails) {\n encryptedDetails = await this.encryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, encryptedDetails];\n }\n default: {\n let encryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && encryptedContact[field]) {\n encryptedValue = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrl,\n encryptedContact[field]\n );\n }\n\n return [field, encryptedValue];\n }\n }\n });\n\n const encryptedFieldsList = await Promise.all(encryptionPromises);\n\n encryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n encryptedContact[field] = value;\n }\n });\n\n return encryptedContact;\n }\n\n /**\n * Decrypts a given contact.\n */\n private async decryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const decryptedContact: Contact = {...contact};\n\n const decryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = decryptedContact.addressInfo;\n let decryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const decryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.decryptText(encryptionKeyUrl, value),\n ]\n );\n\n decryptedAddressInfo = Object.fromEntries(\n await Promise.all(decryptedAddressInfoPromises)\n );\n }\n\n return [field, decryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = decryptedContact[field];\n let decryptedDetails;\n\n if (plainTextDetails) {\n decryptedDetails = await this.decryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, decryptedDetails];\n }\n default: {\n let decryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && decryptedContact[field]) {\n decryptedValue = await this.webex.internal.encryption.decryptText(\n encryptionKeyUrl,\n decryptedContact[field]\n );\n }\n\n return [field, decryptedValue];\n }\n }\n });\n\n const decryptedFieldsList = await Promise.all(decryptionPromises);\n\n decryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n decryptedContact[field] = value;\n }\n });\n\n return decryptedContact;\n }\n\n private resolveCloudContacts(\n contactsDataMap: ContactIdContactInfo,\n inputList: SCIMListResponse\n ): Contact[] | null {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: 'resolveCloudContacts',\n };\n const finalContactList: Contact[] = [];\n const resolvedList: string[] = [];\n\n try {\n inputList.Resources.forEach((item) => {\n resolvedList.push(item.id);\n });\n\n Object.values(contactsDataMap).forEach((item) => {\n const isResolved = resolvedList.some((listItem) => listItem === item.contactId);\n if (!isResolved) {\n finalContactList.push({...item, resolved: false});\n }\n });\n\n for (let n = 0; n < inputList.Resources.length; n += 1) {\n const filteredContact = inputList.Resources[n];\n const {displayName, emails, phoneNumbers, photos} = filteredContact;\n let sipAddresses;\n if (filteredContact[SCIM_WEBEXIDENTITY_USER]) {\n sipAddresses = filteredContact[SCIM_WEBEXIDENTITY_USER].sipAddresses;\n }\n const firstName = filteredContact.name?.givenName;\n const lastName = filteredContact.name?.familyName;\n const manager = filteredContact[SCIM_ENTERPRISE_USER]?.manager?.displayName;\n const department = filteredContact[SCIM_ENTERPRISE_USER]?.department;\n const avatarURL = photos?.length ? photos[0].value : '';\n\n const {contactType, avatarUrlDomain, encryptionKeyUrl, ownerId, groups} =\n contactsDataMap[inputList.Resources[n].id];\n\n const cloudContact = {\n avatarUrlDomain,\n avatarURL,\n contactId: inputList.Resources[n].id,\n contactType,\n department,\n displayName,\n emails,\n encryptionKeyUrl,\n firstName,\n groups,\n lastName,\n manager,\n ownerId,\n phoneNumbers,\n sipAddresses,\n resolved: true,\n };\n\n finalContactList.push(cloudContact);\n }\n } catch (error: any) {\n log.warn('Error occurred while parsing resolved contacts', loggerContext);\n\n return null;\n }\n\n return finalContactList;\n }\n\n /**\n * Returns list of contacts.\n */\n public async getContacts(): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.GET_CONTACTS,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n const contactList: Contact[] = [];\n const cloudContactsMap: ContactIdContactInfo = {};\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.GET,\n });\n\n log.log(\n `Response code: ${response.statusCode} and Response trackingId: ${response?.headers?.trackingid}`,\n loggerContext\n );\n\n const responseBody = response.body as ContactList;\n\n if (!responseBody) {\n throw new Error(`${response}`);\n }\n\n const {contacts, groups} = responseBody;\n\n await Promise.all(\n contacts.map(async (contact) => {\n if (contact.contactType === ContactType.CUSTOM) {\n const decryptedContact = await this.decryptContact(contact);\n\n contactList.push(decryptedContact);\n } else if (contact.contactType === ContactType.CLOUD && contact.contactId) {\n cloudContactsMap[contact.contactId] = contact;\n }\n })\n );\n\n // Resolve cloud contacts\n if (Object.keys(cloudContactsMap).length) {\n const contactIdList = Object.keys(cloudContactsMap);\n const totalContacts = contactIdList.length;\n const MAX_CONTACTS_PER_QUERY = 50;\n\n for (let i = 0; i < totalContacts; i += MAX_CONTACTS_PER_QUERY) {\n try {\n const contactIdListChunk = contactIdList.slice(i, i + MAX_CONTACTS_PER_QUERY);\n const query = contactIdListChunk.map((item) => `${SCIM_ID_FILTER} \"${item}\"`).join(OR);\n const result = await scimQuery(query);\n\n const slicedCloudContactsMap = Object.fromEntries(\n Object.entries(cloudContactsMap).slice(i, i + MAX_CONTACTS_PER_QUERY)\n );\n\n const resolvedContacts = this.resolveCloudContacts(\n slicedCloudContactsMap,\n result.body as SCIMListResponse\n );\n\n if (resolvedContacts) {\n resolvedContacts.forEach((item) => contactList.push(item));\n }\n } catch (error: any) {\n log.warn(\n `Error processing contact chunk ${i}-${i + MAX_CONTACTS_PER_QUERY}`,\n loggerContext\n );\n }\n }\n }\n\n await Promise.all(\n groups.map(async (group, idx) => {\n groups[idx].displayName = await this.webex.internal.encryption.decryptText(\n group.encryptionKeyUrl,\n group.displayName\n );\n })\n );\n\n this.groups = groups;\n this.contacts = contactList;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contacts: contactList,\n groups,\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log('Successfully fetched contacts and groups', loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Error fetching contacts: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a new KMS Resource Object (KRO) and Content Key (CK) which is used for encryption.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async createNewEncryptionKeyUrl(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.CREATE_NEW_ENCRYPTION_KEY_URL,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n let unboundedKeyUri = '';\n\n log.info('Requesting kms for a new KRO and key', loggerContext);\n const unboundedKeys = await this.webex.internal.encryption.kms.createUnboundKeys({count: 1});\n\n unboundedKeyUri = unboundedKeys[0].uri;\n this.webex.internal.encryption.kms.createResource({keyUris: [unboundedKeyUri]});\n\n return unboundedKeyUri;\n }\n\n /**\n * Fetches the encryptionKeyUrl from one of the groups. Creates a new key and default group if there is no data.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async fetchEncryptionKeyUrl(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.FETCH_ENCRYPTION_KEY_URL,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n if (this.encryptionKeyUrl) {\n return this.encryptionKeyUrl;\n }\n // istanbul ignore else\n if (this.groups === undefined) {\n this.getContacts();\n }\n // istanbul ignore else\n if (this.groups && this.groups.length) {\n /** Use the encryptionKeyUrl of any one of the groups */\n return this.groups[0].encryptionKeyUrl;\n }\n\n this.encryptionKeyUrl = await this.createNewEncryptionKeyUrl();\n log.log(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchEncryptionKeyUrl.name,\n });\n const response: ContactResponse = await this.createContactGroup(\n DEFAULT_GROUP_NAME,\n this.encryptionKeyUrl\n );\n\n if (response.data.group?.groupId) {\n this.defaultGroupId = response.data.group?.groupId;\n log.log(`Successfully created default group with ID: ${this.defaultGroupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchEncryptionKeyUrl.name,\n });\n }\n\n return this.encryptionKeyUrl;\n }\n\n /**\n * Fetches a default group.\n *\n * @returns GroupId of default group.\n */\n private async fetchDefaultGroup(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.FETCH_DEFAULT_GROUP,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n if (this.defaultGroupId) {\n log.log(`Using existing default group with ID: ${this.defaultGroupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n return this.defaultGroupId;\n }\n\n /* Check the groups list and determine the defaultGroupId */\n if (this.groups && this.groups.length) {\n for (let i = 0; i < this.groups.length; i += 1) {\n if (this.groups[i].displayName === DEFAULT_GROUP_NAME) {\n this.defaultGroupId = this.groups[i].groupId;\n log.log(`Found default group with ID: ${this.defaultGroupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n return this.defaultGroupId;\n }\n }\n }\n\n log.log('No default group found.', {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n const response: ContactResponse = await this.createContactGroup(DEFAULT_GROUP_NAME);\n\n const {group} = response.data;\n\n if (group) {\n const groupId = group.groupId;\n log.log(`Successfully created new default group with ID: ${groupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n return groupId;\n }\n\n return '';\n }\n\n /**\n * Creates a personal contact group.\n * Also creates a KRO, if there aren't any groups.\n * @param displayName - Name of the group to create.\n * @param encryptionKeyUrl - EncryptionKeyUrl to encrypt the displayName.\n * @param groupType - Type of the group to create.\n */\n public async createContactGroup(\n displayName: string,\n encryptionKeyUrl?: string,\n groupType?: GroupType\n ): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.CREATE_CONTACT_GROUP,\n };\n\n log.info(`${METHOD_START_MESSAGE} with displayName: ${displayName}`, loggerContext);\n\n const encryptionKeyUrlFinal = encryptionKeyUrl || (await this.fetchEncryptionKeyUrl());\n\n if (this.groups === undefined) {\n await this.getContacts();\n }\n\n if (this.groups && this.groups.length) {\n const isExistingGroup = this.groups.find((group) => {\n return group.displayName === displayName;\n });\n\n if (isExistingGroup) {\n log.warn(`Group name ${displayName} already exists.`, loggerContext);\n\n return {\n statusCode: 400 as number,\n data: {error: 'Group displayName already exists'},\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const encryptedDisplayName = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrlFinal,\n displayName\n );\n\n const groupInfo = {\n schemas: CONTACTS_SCHEMA,\n displayName: encryptedDisplayName,\n groupType: groupType || GroupType.NORMAL,\n encryptionKeyUrl: encryptionKeyUrlFinal,\n };\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}`,\n method: HTTP_METHODS.POST,\n body: groupInfo,\n });\n\n log.log(`Response code: ${response.statusCode}`, loggerContext);\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const group = response.body as ContactGroup;\n\n group.displayName = displayName;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n group,\n },\n message: SUCCESS_MESSAGE,\n };\n\n this.groups?.push(group);\n log.log(`Contact group ${displayName} successfully created`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Unable to create contact group: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Deletes a contact group.\n * @param groupId - GroupId of the group to delete.\n */\n public async deleteContactGroup(groupId: string) {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.DELETE_CONTACT_GROUP,\n };\n\n log.info(`${METHOD_START_MESSAGE} with groupId: ${groupId}`, loggerContext);\n\n try {\n log.info(`Deleting contact group: ${groupId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}/${groupId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const groupToDelete = this.groups?.findIndex((group) => group.groupId === groupId);\n\n if (groupToDelete !== undefined && groupToDelete !== -1) {\n this.groups?.splice(groupToDelete, 1);\n }\n\n if (!this.groups?.length) {\n this.defaultGroupId = '';\n }\n\n log.log(`Contact group ${groupId} successfully deleted`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Unable to delete contact group ${groupId}: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a custom contact.\n * @param contactInfo - Contact object to create.\n */\n public async createContact(contactInfo: Contact): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.CREATE_CONTACT,\n };\n\n log.info(`${METHOD_START_MESSAGE} with contactType: ${contactInfo.contactType}`, loggerContext);\n\n try {\n const contact = {...contactInfo};\n\n if (!contact.encryptionKeyUrl) {\n contact.encryptionKeyUrl = await this.fetchEncryptionKeyUrl();\n }\n\n if (!contact.groups || contact.groups.length === 0) {\n /** Fetch the groupId for the default group if not create */\n const defaultGroupId = await this.fetchDefaultGroup();\n\n contact.groups = [defaultGroupId];\n }\n\n contact.schemas = CONTACTS_SCHEMA;\n let requestBody = {};\n\n switch (contact.contactType) {\n case ContactType.CUSTOM: {\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n case ContactType.CLOUD: {\n if (!contact.contactId) {\n return {\n statusCode: 400 as number,\n data: {\n error: 'contactId is required for contactType:CLOUD.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n default: {\n return {\n statusCode: 400 as number,\n data: {\n error: 'Unknown contactType received.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.POST,\n body: requestBody,\n });\n\n log.log(`Response code: ${response.statusCode}`, loggerContext);\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const newContact = response.body as Contact;\n\n contact.contactId = newContact.contactId;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contact,\n },\n message: SUCCESS_MESSAGE,\n };\n\n if (contact.contactType === ContactType.CLOUD && newContact.contactId) {\n const query = `${SCIM_ID_FILTER} \"${newContact.contactId}\"`;\n const res = await scimQuery(query);\n const resolvedContact = this.resolveCloudContacts(\n Object.fromEntries([[newContact.contactId, newContact]]) as ContactIdContactInfo,\n res.body as SCIMListResponse\n );\n if (resolvedContact) {\n this.contacts?.push(resolvedContact[0]);\n }\n } else {\n this.contacts?.push(contact);\n }\n log.log(`Contact successfully created`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Failed to create contact: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Delete a contact.\n * @param contactId - ContactId of the contact to delete.\n */\n public async deleteContact(contactId: string): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.DELETE_CONTACT,\n };\n\n log.info(`${METHOD_START_MESSAGE} with contactId: ${contactId}`, loggerContext);\n\n try {\n log.info(`Deleting contact : ${contactId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}/${contactId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const contactToDelete = this.contacts?.findIndex(\n (contact) => contact.contactId === contactId\n );\n\n if (contactToDelete !== undefined && contactToDelete !== -1) {\n this.contacts?.splice(contactToDelete, 1);\n }\n\n log.log(`Contact ${contactId} successfully deleted`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Unable to delete contact ${contactId}: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * @ignore\n */\n public getSDKConnector(): ISDKConnector {\n return this.sdkConnector;\n }\n}\n\n/**\n * Creates a ContactsClient instance\n *\n * @param {WebexSDK} webex - `Webex SDK`instance.\n * @param {LoggerInterface} logger - An instance implementing LoggerInterface used to set the log level for the module.\n */\nexport const createContactsClient = (webex: WebexSDK, logger: LoggerInterface): IContacts =>\n new ContactsClient(webex, logger);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_constants","require","_types","_SDKConnector","_interopRequireDefault","_Logger","_constants2","_types2","_Utils","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","ContactsClient","exports","webex","logger","_this$webex$internal$","_classCallCheck2","sdkConnector","SDKConnector","getWebex","setWebex","encryptionKeyUrl","groups","undefined","contacts","defaultGroupId","contactsServiceUrl","internal","services","_serviceUrls","contactsService","get","_activeServices","log","setLogger","level","CONTACTS_CLIENT","_createClass2","key","value","_decryptContactDetail","_asyncToGenerator2","_regenerator","mark","_callee","contactDetails","_this","decryptedContactDetail","decryptedValues","wrap","_callee$","_context","prev","next","_toConsumableArray2","_promise","all","map","detail","encryption","decryptText","sent","decryptedValue","index","abrupt","stop","decryptContactDetail","_x","_x2","_encryptContactDetail","_callee2","_this2","encryptedContactDetail","encryptedValues","_callee2$","_context2","encryptText","encryptedValue","encryptContactDetail","_x3","_x4","_encryptContact","_callee5","contact","_this3","encryptedContact","encryptionPromises","encryptedFieldsList","_callee5$","_context5","_values","encryptedFields","_ref","_callee4","field","plaintextAddressInfo","encryptedAddressInfo","encryptedAddressInfoPromises","plainTextDetails","encryptedDetails","_callee4$","_context4","t0","ADDRESS_INFO","EMAILS","PHONE_NUMBERS","SIP_ADDRESSES","addressInfo","_entries","_ref3","_callee3","_ref2","_ref4","_callee3$","_context3","_slicedToArray2","t1","_x7","t2","fromEntries","call","includes","_x6","_ref5","_ref6","encryptContact","_x5","_decryptContact","_callee8","_this4","decryptedContact","decryptionPromises","decryptedFieldsList","_callee8$","_context8","_ref7","_callee7","decryptedAddressInfo","decryptedAddressInfoPromises","decryptedDetails","_callee7$","_context7","_ref9","_callee6","_ref8","_ref0","_callee6$","_context6","_x0","_x9","_ref1","_ref10","decryptContact","_x8","resolveCloudContacts","contactsDataMap","inputList","loggerContext","file","method","finalContactList","resolvedList","Resources","item","id","isResolved","some","listItem","contactId","resolved","n","_filteredContact$name","_filteredContact$name2","_filteredContact$SCIM","_filteredContact$SCIM2","_filteredContact$SCIM3","filteredContact","displayName","emails","phoneNumbers","photos","sipAddresses","SCIM_WEBEXIDENTITY_USER","firstName","name","givenName","lastName","familyName","manager","SCIM_ENTERPRISE_USER","department","avatarURL","_contactsDataMap$inpu","contactType","avatarUrlDomain","ownerId","cloudContact","error","warn","_getContacts","_callee1","_this5","contactList","cloudContactsMap","_response$headers","response","responseBody","contactIdList","totalContacts","MAX_CONTACTS_PER_QUERY","i","contactIdListChunk","query","result","slicedCloudContactsMap","resolvedContacts","contactResponse","errorStatus","_callee1$","_context1","METHODS","GET_CONTACTS","info","METHOD_START_MESSAGE","request","uri","concat","ENCRYPT_FILTER","USERS","CONTACT_FILTER","HTTP_METHODS","GET","statusCode","headers","trackingid","body","Error","_ref11","_callee9","_callee9$","_context9","ContactType","CUSTOM","CLOUD","_x1","_keys","slice","SCIM_ID_FILTER","join","OR","scimQuery","_ref12","_callee0","group","idx","_callee0$","_context0","_x10","_x11","Number","STATUS_CODE","data","message","SUCCESS_MESSAGE","_stringify","serviceErrorCodeHandler","uploadLogs","getContacts","_createNewEncryptionKeyUrl","_callee10","unboundedKeyUri","unboundedKeys","_callee10$","_context10","CREATE_NEW_ENCRYPTION_KEY_URL","kms","createUnboundKeys","count","createResource","keyUris","createNewEncryptionKeyUrl","_fetchEncryptionKeyUrl","_callee11","_response$data$group","_response$data$group2","_callee11$","_context11","FETCH_ENCRYPTION_KEY_URL","DEFAULT_GROUP_NAME","fetchEncryptionKeyUrl","createContactGroup","groupId","_fetchDefaultGroup","_callee12","_callee12$","_context12","FETCH_DEFAULT_GROUP","fetchDefaultGroup","_createContactGroup","_callee13","groupType","encryptionKeyUrlFinal","isExistingGroup","encryptedDisplayName","groupInfo","_response$headers2","_this$groups","_callee13$","_context13","CREATE_CONTACT_GROUP","find","FAILURE_MESSAGE","schemas","CONTACTS_SCHEMA","GroupType","NORMAL","GROUP_FILTER","POST","_x12","_x13","_x14","_deleteContactGroup","_callee14","_response$headers3","_this$groups2","_this$groups4","groupToDelete","_this$groups3","_callee14$","_context14","DELETE_CONTACT_GROUP","DELETE","findIndex","splice","deleteContactGroup","_x15","_createContact","_callee15","contactInfo","_response$headers4","requestBody","_encryptedContact","newContact","res","resolvedContact","_this$contacts","_this$contacts2","_callee15$","_context15","CREATE_CONTACT","createContact","_x16","_deleteContact","_callee16","_this$contacts3","contactToDelete","_this$contacts4","_callee16$","_context16","DELETE_CONTACT","deleteContact","_x17","getSDKConnector","createContactsClient"],"sources":["ContactsClient.ts"],"sourcesContent":["/* eslint-disable no-await-in-loop */\nimport {\n FAILURE_MESSAGE,\n METHOD_START_MESSAGE,\n SCIM_ENTERPRISE_USER,\n SCIM_WEBEXIDENTITY_USER,\n STATUS_CODE,\n SUCCESS_MESSAGE,\n} from '../common/constants';\nimport {HTTP_METHODS, WebexRequestPayload, ContactDetail, SCIMListResponse} from '../common/types';\nimport {LoggerInterface} from '../Voicemail/types';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport SDKConnector from '../SDKConnector';\n\nimport log from '../Logger';\nimport {\n CONTACTS_CLIENT,\n CONTACTS_SCHEMA,\n CONTACT_FILTER,\n DEFAULT_GROUP_NAME,\n ENCRYPT_FILTER,\n GROUP_FILTER,\n METHODS,\n OR,\n SCIM_ID_FILTER,\n USERS,\n encryptedFields,\n} from './constants';\nimport {\n Contact,\n ContactIdContactInfo,\n ContactList,\n ContactResponse,\n ContactType,\n IContacts,\n ContactGroup,\n GroupType,\n} from './types';\n\nimport {scimQuery, serviceErrorCodeHandler, uploadLogs} from '../common/Utils';\n\n/**\n * `ContactsClient` module is designed to offer a set of APIs for retrieving and updating contacts and groups from the contacts-service.\n *\n * This code snippet demonstrates how to create an instance of `ContactClient` using webex and logger.\n *\n * Example\n * ```javascript\n * const contactClient = createContactsClient(webex, logger);\n * ```\n */\nexport class ContactsClient implements IContacts {\n private sdkConnector: ISDKConnector;\n\n private encryptionKeyUrl: string;\n\n private webex: WebexSDK;\n\n private groups: ContactGroup[] | undefined;\n\n private contacts: Contact[] | undefined;\n\n private defaultGroupId: string;\n\n private contactsServiceUrl: string;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, logger: LoggerInterface) {\n this.sdkConnector = SDKConnector;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n\n this.webex = this.sdkConnector.getWebex();\n\n this.encryptionKeyUrl = '';\n this.groups = undefined;\n this.contacts = undefined;\n this.defaultGroupId = '';\n this.contactsServiceUrl =\n this.webex.internal.services._serviceUrls?.contactsService ||\n this.webex.internal.services.get(\n this.webex.internal.services._activeServices.contactsService\n );\n log.setLogger(logger.level, CONTACTS_CLIENT);\n }\n\n /**\n * Decrypt emails, phoneNumbers, sipAddresses.\n */\n private async decryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const decryptedContactDetail = [...contactDetails];\n\n const decryptedValues = await Promise.all(\n decryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.decryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n decryptedValues.forEach((decryptedValue, index) => {\n decryptedContactDetail[index].value = decryptedValue;\n });\n\n return decryptedContactDetail;\n }\n\n /**\n * Encrypt emails, phoneNumbers, sipAddresses.\n *\n */\n private async encryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const encryptedContactDetail = [...contactDetails];\n\n const encryptedValues = await Promise.all(\n encryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.encryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n encryptedValues.forEach((encryptedValue, index) => {\n encryptedContactDetail[index].value = encryptedValue;\n });\n\n return encryptedContactDetail;\n }\n\n /**\n * Encrypts a given contact.\n */\n private async encryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const encryptedContact: Contact = {...contact};\n\n const encryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = encryptedContact.addressInfo;\n let encryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const encryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.encryptText(encryptionKeyUrl, value),\n ]\n );\n\n encryptedAddressInfo = Object.fromEntries(\n await Promise.all(encryptedAddressInfoPromises)\n );\n }\n\n return [field, encryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = encryptedContact[field];\n let encryptedDetails;\n\n if (plainTextDetails) {\n encryptedDetails = await this.encryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, encryptedDetails];\n }\n default: {\n let encryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && encryptedContact[field]) {\n encryptedValue = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrl,\n encryptedContact[field]\n );\n }\n\n return [field, encryptedValue];\n }\n }\n });\n\n const encryptedFieldsList = await Promise.all(encryptionPromises);\n\n encryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n encryptedContact[field] = value;\n }\n });\n\n return encryptedContact;\n }\n\n /**\n * Decrypts a given contact.\n */\n private async decryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const decryptedContact: Contact = {...contact};\n\n const decryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = decryptedContact.addressInfo;\n let decryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const decryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.decryptText(encryptionKeyUrl, value),\n ]\n );\n\n decryptedAddressInfo = Object.fromEntries(\n await Promise.all(decryptedAddressInfoPromises)\n );\n }\n\n return [field, decryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = decryptedContact[field];\n let decryptedDetails;\n\n if (plainTextDetails) {\n decryptedDetails = await this.decryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, decryptedDetails];\n }\n default: {\n let decryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && decryptedContact[field]) {\n decryptedValue = await this.webex.internal.encryption.decryptText(\n encryptionKeyUrl,\n decryptedContact[field]\n );\n }\n\n return [field, decryptedValue];\n }\n }\n });\n\n const decryptedFieldsList = await Promise.all(decryptionPromises);\n\n decryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n decryptedContact[field] = value;\n }\n });\n\n return decryptedContact;\n }\n\n private resolveCloudContacts(\n contactsDataMap: ContactIdContactInfo,\n inputList: SCIMListResponse\n ): Contact[] | null {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: 'resolveCloudContacts',\n };\n const finalContactList: Contact[] = [];\n const resolvedList: string[] = [];\n\n try {\n inputList.Resources.forEach((item) => {\n resolvedList.push(item.id);\n });\n\n Object.values(contactsDataMap).forEach((item) => {\n const isResolved = resolvedList.some((listItem) => listItem === item.contactId);\n if (!isResolved) {\n finalContactList.push({...item, resolved: false});\n }\n });\n\n for (let n = 0; n < inputList.Resources.length; n += 1) {\n const filteredContact = inputList.Resources[n];\n const {displayName, emails, phoneNumbers, photos} = filteredContact;\n let sipAddresses;\n if (filteredContact[SCIM_WEBEXIDENTITY_USER]) {\n sipAddresses = filteredContact[SCIM_WEBEXIDENTITY_USER].sipAddresses;\n }\n const firstName = filteredContact.name?.givenName;\n const lastName = filteredContact.name?.familyName;\n const manager = filteredContact[SCIM_ENTERPRISE_USER]?.manager?.displayName;\n const department = filteredContact[SCIM_ENTERPRISE_USER]?.department;\n const avatarURL = photos?.length ? photos[0].value : '';\n\n const {contactType, avatarUrlDomain, encryptionKeyUrl, ownerId, groups} =\n contactsDataMap[inputList.Resources[n].id];\n\n const cloudContact = {\n avatarUrlDomain,\n avatarURL,\n contactId: inputList.Resources[n].id,\n contactType,\n department,\n displayName,\n emails,\n encryptionKeyUrl,\n firstName,\n groups,\n lastName,\n manager,\n ownerId,\n phoneNumbers,\n sipAddresses,\n resolved: true,\n };\n\n finalContactList.push(cloudContact);\n }\n } catch (error: any) {\n log.warn('Error occurred while parsing resolved contacts', loggerContext);\n\n return null;\n }\n\n return finalContactList;\n }\n\n /**\n * Returns list of contacts.\n */\n public async getContacts(): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.GET_CONTACTS,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n const contactList: Contact[] = [];\n const cloudContactsMap: ContactIdContactInfo = {};\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.GET,\n });\n\n log.log(\n `Response code: ${response.statusCode} and Response trackingId: ${response?.headers?.trackingid}`,\n loggerContext\n );\n\n const responseBody = response.body as ContactList;\n\n if (!responseBody) {\n throw new Error(`${response}`);\n }\n\n const {contacts, groups} = responseBody;\n\n await Promise.all(\n contacts.map(async (contact) => {\n if (contact.contactType === ContactType.CUSTOM) {\n const decryptedContact = await this.decryptContact(contact);\n\n contactList.push(decryptedContact);\n } else if (contact.contactType === ContactType.CLOUD && contact.contactId) {\n cloudContactsMap[contact.contactId] = contact;\n }\n })\n );\n\n // Resolve cloud contacts\n if (Object.keys(cloudContactsMap).length) {\n const contactIdList = Object.keys(cloudContactsMap);\n const totalContacts = contactIdList.length;\n const MAX_CONTACTS_PER_QUERY = 50;\n\n for (let i = 0; i < totalContacts; i += MAX_CONTACTS_PER_QUERY) {\n try {\n const contactIdListChunk = contactIdList.slice(i, i + MAX_CONTACTS_PER_QUERY);\n const query = contactIdListChunk.map((item) => `${SCIM_ID_FILTER} \"${item}\"`).join(OR);\n const result = await scimQuery(query);\n\n const slicedCloudContactsMap = Object.fromEntries(\n Object.entries(cloudContactsMap).slice(i, i + MAX_CONTACTS_PER_QUERY)\n );\n\n const resolvedContacts = this.resolveCloudContacts(\n slicedCloudContactsMap,\n result.body as SCIMListResponse\n );\n\n if (resolvedContacts) {\n resolvedContacts.forEach((item) => contactList.push(item));\n }\n } catch (error: any) {\n log.warn(\n `Error processing contact chunk ${i}-${i + MAX_CONTACTS_PER_QUERY}`,\n loggerContext\n );\n }\n }\n }\n\n await Promise.all(\n groups.map(async (group, idx) => {\n groups[idx].displayName = await this.webex.internal.encryption.decryptText(\n group.encryptionKeyUrl,\n group.displayName\n );\n })\n );\n\n this.groups = groups;\n this.contacts = contactList;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contacts: contactList,\n groups,\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log('Successfully fetched contacts and groups', loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Error fetching contacts: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a new KMS Resource Object (KRO) and Content Key (CK) which is used for encryption.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async createNewEncryptionKeyUrl(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.CREATE_NEW_ENCRYPTION_KEY_URL,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n let unboundedKeyUri = '';\n\n log.info('Requesting kms for a new KRO and key', loggerContext);\n const unboundedKeys = await this.webex.internal.encryption.kms.createUnboundKeys({count: 1});\n\n unboundedKeyUri = unboundedKeys[0].uri;\n this.webex.internal.encryption.kms.createResource({keyUris: [unboundedKeyUri]});\n\n return unboundedKeyUri;\n }\n\n /**\n * Fetches the encryptionKeyUrl from one of the groups. Creates a new key and default group if there is no data.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async fetchEncryptionKeyUrl(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.FETCH_ENCRYPTION_KEY_URL,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n if (this.encryptionKeyUrl) {\n return this.encryptionKeyUrl;\n }\n // istanbul ignore else\n if (this.groups === undefined) {\n this.getContacts();\n }\n // istanbul ignore else\n if (this.groups && this.groups.length) {\n /** Use the encryptionKeyUrl of any one of the groups */\n return this.groups[0].encryptionKeyUrl;\n }\n\n this.encryptionKeyUrl = await this.createNewEncryptionKeyUrl();\n log.log(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchEncryptionKeyUrl.name,\n });\n const response: ContactResponse = await this.createContactGroup(\n DEFAULT_GROUP_NAME,\n this.encryptionKeyUrl\n );\n\n if (response.data.group?.groupId) {\n this.defaultGroupId = response.data.group?.groupId;\n log.log(`Successfully created default group with ID: ${this.defaultGroupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchEncryptionKeyUrl.name,\n });\n }\n\n return this.encryptionKeyUrl;\n }\n\n /**\n * Fetches a default group.\n *\n * @returns GroupId of default group.\n */\n private async fetchDefaultGroup(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.FETCH_DEFAULT_GROUP,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n if (this.defaultGroupId) {\n log.log(`Using existing default group with ID: ${this.defaultGroupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n return this.defaultGroupId;\n }\n\n /* Check the groups list and determine the defaultGroupId */\n if (this.groups && this.groups.length) {\n for (let i = 0; i < this.groups.length; i += 1) {\n if (this.groups[i].displayName === DEFAULT_GROUP_NAME) {\n this.defaultGroupId = this.groups[i].groupId;\n log.log(`Found default group with ID: ${this.defaultGroupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n return this.defaultGroupId;\n }\n }\n }\n\n log.log('No default group found.', {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n const response: ContactResponse = await this.createContactGroup(DEFAULT_GROUP_NAME);\n\n const {group} = response.data;\n\n if (group) {\n const groupId = group.groupId;\n log.log(`Successfully created new default group with ID: ${groupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n return groupId;\n }\n\n return '';\n }\n\n /**\n * Creates a personal contact group.\n * Also creates a KRO, if there aren't any groups.\n * @param displayName - Name of the group to create.\n * @param encryptionKeyUrl - EncryptionKeyUrl to encrypt the displayName.\n * @param groupType - Type of the group to create.\n */\n public async createContactGroup(\n displayName: string,\n encryptionKeyUrl?: string,\n groupType?: GroupType\n ): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.CREATE_CONTACT_GROUP,\n };\n\n log.info(`${METHOD_START_MESSAGE} with displayName: ${displayName}`, loggerContext);\n\n const encryptionKeyUrlFinal = encryptionKeyUrl || (await this.fetchEncryptionKeyUrl());\n\n if (this.groups === undefined) {\n await this.getContacts();\n }\n\n if (this.groups && this.groups.length) {\n const isExistingGroup = this.groups.find((group) => {\n return group.displayName === displayName;\n });\n\n if (isExistingGroup) {\n log.warn(`Group name ${displayName} already exists.`, loggerContext);\n\n return {\n statusCode: 400 as number,\n data: {error: 'Group displayName already exists'},\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const encryptedDisplayName = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrlFinal,\n displayName\n );\n\n const groupInfo = {\n schemas: CONTACTS_SCHEMA,\n displayName: encryptedDisplayName,\n groupType: groupType || GroupType.NORMAL,\n encryptionKeyUrl: encryptionKeyUrlFinal,\n };\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}`,\n method: HTTP_METHODS.POST,\n body: groupInfo,\n });\n\n log.log(`Response code: ${response.statusCode}`, loggerContext);\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const group = response.body as ContactGroup;\n\n group.displayName = displayName;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n group,\n },\n message: SUCCESS_MESSAGE,\n };\n\n this.groups?.push(group);\n log.log(`Contact group ${displayName} successfully created`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Unable to create contact group: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Deletes a contact group.\n * @param groupId - GroupId of the group to delete.\n */\n public async deleteContactGroup(groupId: string) {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.DELETE_CONTACT_GROUP,\n };\n\n log.info(`${METHOD_START_MESSAGE} with groupId: ${groupId}`, loggerContext);\n\n try {\n log.info(`Deleting contact group: ${groupId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}/${groupId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const groupToDelete = this.groups?.findIndex((group) => group.groupId === groupId);\n\n if (groupToDelete !== undefined && groupToDelete !== -1) {\n this.groups?.splice(groupToDelete, 1);\n }\n\n if (!this.groups?.length) {\n this.defaultGroupId = '';\n }\n\n log.log(`Contact group ${groupId} successfully deleted`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Unable to delete contact group ${groupId}: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a custom contact.\n * @param contactInfo - Contact object to create.\n */\n public async createContact(contactInfo: Contact): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.CREATE_CONTACT,\n };\n\n log.info(`${METHOD_START_MESSAGE} with contactType: ${contactInfo.contactType}`, loggerContext);\n\n try {\n const contact = {...contactInfo};\n\n if (!contact.encryptionKeyUrl) {\n contact.encryptionKeyUrl = await this.fetchEncryptionKeyUrl();\n }\n\n if (!contact.groups || contact.groups.length === 0) {\n /** Fetch the groupId for the default group if not create */\n const defaultGroupId = await this.fetchDefaultGroup();\n\n contact.groups = [defaultGroupId];\n }\n\n contact.schemas = CONTACTS_SCHEMA;\n let requestBody = {};\n\n switch (contact.contactType) {\n case ContactType.CUSTOM: {\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n case ContactType.CLOUD: {\n if (!contact.contactId) {\n return {\n statusCode: 400 as number,\n data: {\n error: 'contactId is required for contactType:CLOUD.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n default: {\n return {\n statusCode: 400 as number,\n data: {\n error: 'Unknown contactType received.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.POST,\n body: requestBody,\n });\n\n log.log(`Response code: ${response.statusCode}`, loggerContext);\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const newContact = response.body as Contact;\n\n contact.contactId = newContact.contactId;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contact,\n },\n message: SUCCESS_MESSAGE,\n };\n\n if (contact.contactType === ContactType.CLOUD && newContact.contactId) {\n const query = `${SCIM_ID_FILTER} \"${newContact.contactId}\"`;\n const res = await scimQuery(query);\n const resolvedContact = this.resolveCloudContacts(\n Object.fromEntries([[newContact.contactId, newContact]]) as ContactIdContactInfo,\n res.body as SCIMListResponse\n );\n if (resolvedContact) {\n this.contacts?.push(resolvedContact[0]);\n }\n } else {\n this.contacts?.push(contact);\n }\n log.log(`Contact successfully created`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Failed to create contact: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Delete a contact.\n * @param contactId - ContactId of the contact to delete.\n */\n public async deleteContact(contactId: string): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.DELETE_CONTACT,\n };\n\n log.info(`${METHOD_START_MESSAGE} with contactId: ${contactId}`, loggerContext);\n\n try {\n log.info(`Deleting contact : ${contactId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}/${contactId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const contactToDelete = this.contacts?.findIndex(\n (contact) => contact.contactId === contactId\n );\n\n if (contactToDelete !== undefined && contactToDelete !== -1) {\n this.contacts?.splice(contactToDelete, 1);\n }\n\n log.log(`Contact ${contactId} successfully deleted`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Unable to delete contact ${contactId}: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * @ignore\n */\n public getSDKConnector(): ISDKConnector {\n return this.sdkConnector;\n }\n}\n\n/**\n * Creates a ContactsClient instance\n *\n * @param {WebexSDK} webex - `Webex SDK`instance.\n * @param {LoggerInterface} logger - An instance implementing LoggerInterface used to set the log level for the module.\n */\nexport const createContactsClient = (webex: WebexSDK, logger: LoggerInterface): IContacts =>\n new ContactsClient(webex, logger);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,7 +14,6 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/
|
|
|
14
14
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
|
15
15
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
16
16
|
var _events = _interopRequireDefault(require("events"));
|
|
17
|
-
var _flatted = require("flatted");
|
|
18
17
|
var _Logger = _interopRequireDefault(require("../../Logger"));
|
|
19
18
|
var _types = require("../../Logger/types");
|
|
20
19
|
function _createSuper(t) { var r = _isNativeReflectConstruct(); return function () { var e, o = (0, _getPrototypeOf2.default)(t); if (r) { var s = (0, _getPrototypeOf2.default)(this).constructor; e = _Reflect$construct(o, arguments, s); } else e = o.apply(this, arguments); return (0, _possibleConstructorReturn2.default)(this, e); }; }
|
|
@@ -44,7 +43,7 @@ var Eventing = exports.Eventing = /*#__PURE__*/function (_ref) {
|
|
|
44
43
|
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
45
44
|
args[_key - 1] = arguments[_key];
|
|
46
45
|
}
|
|
47
|
-
_Logger.default.info("".concat(timestamp, " ").concat(_types.LOG_PREFIX.EVENT, ": ").concat(event.toString(), " - event emitted with parameters -> ").concat(
|
|
46
|
+
_Logger.default.info("".concat(timestamp, " ").concat(_types.LOG_PREFIX.EVENT, ": ").concat(event.toString(), " - event emitted with parameters -> ").concat(args), {
|
|
48
47
|
file: 'Events/impl/index.ts',
|
|
49
48
|
method: 'emit'
|
|
50
49
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_events","_interopRequireDefault","require","
|
|
1
|
+
{"version":3,"names":["_events","_interopRequireDefault","require","_Logger","_types","_createSuper","t","r","_isNativeReflectConstruct","e","o","_getPrototypeOf2","default","s","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Boolean","prototype","valueOf","call","Eventing","exports","_ref","_inherits2","_super","_classCallCheck2","_createClass2","key","value","emit","event","_get2","timestamp","Date","toUTCString","_len","length","args","Array","_key","Logger","info","concat","LOG_PREFIX","EVENT","toString","file","method","_get3","on","listener","off","EventEmitter"],"sources":["index.ts"],"sourcesContent":["/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-shadow */\nimport EventEmitter from 'events';\nimport TypedEmitter, {EventMap} from 'typed-emitter'; // eslint-disable-line import/no-extraneous-dependencies\nimport Logger from '../../Logger';\nimport {LOG_PREFIX} from '../../Logger/types';\n\n/**\n *\n */\nexport class Eventing<T extends EventMap> extends (EventEmitter as {\n new <T extends EventMap>(): TypedEmitter<T>;\n})<T> {\n /**\n * @event\n *\n * @param event - Event that is going ot be emitted.\n * @param args - Parameters that are emitted with the event.\n */\n emit<E extends keyof T>(event: E, ...args: Parameters<T[E]>): boolean {\n const timestamp = new Date().toUTCString();\n\n Logger.info(\n `${timestamp} ${\n LOG_PREFIX.EVENT\n }: ${event.toString()} - event emitted with parameters -> ${args}`,\n {\n file: 'Events/impl/index.ts',\n method: 'emit',\n }\n );\n\n return super.emit(event, ...args);\n }\n\n /**\n * .\n * @event\n *\n * @param event - Event to listen to.\n * @param listener - Callback for event.\n */\n on<E extends keyof T>(event: E, listener: T[E]): this {\n return super.on(event, listener);\n }\n\n /**\n * .\n * @event\n *\n * @param event - Event to remove listener on.\n * @param listener - Callback for event.\n */\n off<E extends keyof T>(event: E, listener: T[E]): this {\n return super.off(event, listener);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {\n KmsKey,\n KmsResourceObject,\n LogsMetaData,\n PeopleListResponse,\n UploadLogsResponse,\n WebexRequestPayload,\n} from '../common/types';\n/* eslint-disable no-shadow */\n\ntype Listener = (e: string, data?: unknown) => void;\ntype ListenerOff = (e: string) => void;\n\nexport type ServiceHost = {\n host: string;\n ttl: number;\n priority: number;\n id: string;\n homeCluster?: boolean;\n};\n\nexport type Model = {\n _values: {\n key: string;\n };\n};\n\nexport type ServiceCatalog = {\n serviceGroups: {\n // cSpell:disable\n postauth: [\n {\n _values: {\n name: string;\n hosts: ServiceHost[];\n };\n }\n ];\n /* cSpell:enable */\n };\n};\n\nexport type ClientRegionInfo = {\n attribution: string;\n clientAddress: string;\n clientRegion: string;\n countryCode: string;\n disclaimer: string;\n regionCode: string;\n timezone: string;\n};\n\nexport type Logger = {\n config?: {\n level: string;\n bufferLogLevel: string;\n };\n log: (payload: string) => void;\n error: (payload: string) => void;\n warn: (payload: string) => void;\n info: (payload: string) => void;\n trace: (payload: string) => void;\n debug: (payload: string) => void;\n};\n\n// TODO: is there a way to import bindings from the Webex JS SDK without having to redefine expected methods and structure?\n// This defines the shape for the webex SDK, if a typing doesn't exist, it should be added here\nexport interface WebexSDK {\n // top level primitives/funcs\n config: {fedramp: boolean};\n version: string;\n canAuthorize: boolean;\n credentials: {\n getUserToken: () => Promise<string>;\n };\n ready: boolean;\n request: <T>(payload: WebexRequestPayload) => Promise<T>;\n // internal plugins\n internal: {\n mercury: {\n on: Listener;\n off: ListenerOff;\n connected: boolean;\n connecting: boolean;\n };\n calendar: unknown;\n device: {\n url: string;\n userId: string;\n orgId: string;\n version: string;\n callingBehavior: string;\n features: {\n entitlement: {\n models: Model[];\n };\n };\n };\n encryption: {\n decryptText: (encryptionKeyUrl: string, encryptedData?: string) => Promise<string>;\n encryptText: (encryptionKeyUrl: string, text?: string) => Promise<string>;\n kms: {\n createUnboundKeys: (arg0: {count?: number}) => Promise<KmsKey[]>;\n createResource: (arg0: {keyUris: string[]}) => Promise<KmsResourceObject>;\n bindKey: (arg0: {kroUri: string; keyUri: string}) => Promise<KmsKey>;\n };\n };\n presence: unknown;\n support: {\n submitLogs: (\n metaData: LogsMetaData,\n logs?: string,\n options?: {\n type: 'diff' | 'full';\n }\n ) => Promise<UploadLogsResponse>;\n };\n services: {\n _hostCatalog: Record<string, ServiceHost[]>;\n _serviceUrls: {\n mobius: string;\n identity: string;\n janus: string;\n wdm: string;\n broadworksIdpProxy: string;\n hydra: string;\n mercuryApi: string;\n 'ucmgmt-gateway': string;\n contactsService: string;\n };\n fetchClientRegionInfo: () => Promise<ClientRegionInfo>;\n };\n metrics: {\n submitClientMetrics: (name: string, data: unknown) => void;\n };\n };\n // public plugins\n logger: Logger;\n messages: unknown;\n memberships: unknown;\n people: {\n list: (arg: object) => Promise<PeopleListResponse>;\n };\n rooms: unknown;\n teams: unknown;\n}\n\nexport interface ISDKConnector {\n setWebex: (webexInstance: WebexSDK) => void;\n getWebex: () => WebexSDK;\n get: () => ISDKConnector;\n registerListener: <T>(event: string, cb: (data?: T) => unknown) => void;\n unregisterListener: (event: string) => void;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {\n KmsKey,\n KmsResourceObject,\n LogsMetaData,\n PeopleListResponse,\n UploadLogsResponse,\n WebexRequestPayload,\n} from '../common/types';\n/* eslint-disable no-shadow */\n\ntype Listener = (e: string, data?: unknown) => void;\ntype ListenerOff = (e: string) => void;\n\nexport type ServiceHost = {\n host: string;\n ttl: number;\n priority: number;\n id: string;\n homeCluster?: boolean;\n};\n\nexport type Model = {\n _values: {\n key: string;\n };\n};\n\nexport type ServiceCatalog = {\n serviceGroups: {\n // cSpell:disable\n postauth: [\n {\n _values: {\n name: string;\n hosts: ServiceHost[];\n };\n }\n ];\n /* cSpell:enable */\n };\n};\n\nexport type ClientRegionInfo = {\n attribution: string;\n clientAddress: string;\n clientRegion: string;\n countryCode: string;\n disclaimer: string;\n regionCode: string;\n timezone: string;\n};\n\nexport type Logger = {\n config?: {\n level: string;\n bufferLogLevel: string;\n };\n log: (payload: string) => void;\n error: (payload: string) => void;\n warn: (payload: string) => void;\n info: (payload: string) => void;\n trace: (payload: string) => void;\n debug: (payload: string) => void;\n};\n\n// TODO: is there a way to import bindings from the Webex JS SDK without having to redefine expected methods and structure?\n// This defines the shape for the webex SDK, if a typing doesn't exist, it should be added here\nexport interface WebexSDK {\n // top level primitives/funcs\n config: {fedramp: boolean};\n version: string;\n canAuthorize: boolean;\n credentials: {\n getUserToken: () => Promise<string>;\n };\n ready: boolean;\n request: <T>(payload: WebexRequestPayload) => Promise<T>;\n // internal plugins\n internal: {\n mercury: {\n on: Listener;\n off: ListenerOff;\n connected: boolean;\n connecting: boolean;\n };\n calendar: unknown;\n device: {\n url: string;\n userId: string;\n orgId: string;\n version: string;\n callingBehavior: string;\n features: {\n entitlement: {\n models: Model[];\n };\n };\n };\n encryption: {\n decryptText: (encryptionKeyUrl: string, encryptedData?: string) => Promise<string>;\n encryptText: (encryptionKeyUrl: string, text?: string) => Promise<string>;\n kms: {\n createUnboundKeys: (arg0: {count?: number}) => Promise<KmsKey[]>;\n createResource: (arg0: {keyUris: string[]}) => Promise<KmsResourceObject>;\n bindKey: (arg0: {kroUri: string; keyUri: string}) => Promise<KmsKey>;\n };\n };\n presence: unknown;\n support: {\n submitLogs: (\n metaData: LogsMetaData,\n logs?: string,\n options?: {\n type: 'diff' | 'full';\n }\n ) => Promise<UploadLogsResponse>;\n };\n services: {\n _hostCatalog: Record<string, ServiceHost[]>;\n _serviceUrls: {\n mobius: string;\n identity: string;\n janus: string;\n wdm: string;\n broadworksIdpProxy: string;\n hydra: string;\n mercuryApi: string;\n 'ucmgmt-gateway': string;\n contactsService: string;\n };\n _activeServices: {\n broadworksIdpProxy: string;\n contactsService: string;\n hydra: string;\n janus: string;\n mercuryApi: string;\n mobius: string;\n };\n get: (service: string) => string;\n getMobiusClusters: () => ServiceHost[];\n fetchClientRegionInfo: () => Promise<ClientRegionInfo>;\n };\n metrics: {\n submitClientMetrics: (name: string, data: unknown) => void;\n };\n };\n // public plugins\n logger: Logger;\n messages: unknown;\n memberships: unknown;\n people: {\n list: (arg: object) => Promise<PeopleListResponse>;\n };\n rooms: unknown;\n teams: unknown;\n}\n\nexport interface ISDKConnector {\n setWebex: (webexInstance: WebexSDK) => void;\n getWebex: () => WebexSDK;\n get: () => ISDKConnector;\n registerListener: <T>(event: string, cb: (data?: T) => unknown) => void;\n unregisterListener: (event: string) => void;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -145,7 +145,8 @@ var BroadworksBackendConnector = exports.BroadworksBackendConnector = /*#__PURE_
|
|
|
145
145
|
key: "getBwToken",
|
|
146
146
|
value: (function () {
|
|
147
147
|
var _getBwToken = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
148
|
-
var
|
|
148
|
+
var _this$webex$internal$;
|
|
149
|
+
var loggerContext, broadworksIdpProxyUrl, bwTokenResponse, response;
|
|
149
150
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
150
151
|
while (1) switch (_context2.prev = _context2.next) {
|
|
151
152
|
case 0:
|
|
@@ -154,30 +155,31 @@ var BroadworksBackendConnector = exports.BroadworksBackendConnector = /*#__PURE_
|
|
|
154
155
|
method: _constants2.METHODS.GET_BW_TOKEN
|
|
155
156
|
};
|
|
156
157
|
_Logger.default.info(_constants.METHOD_START_MESSAGE, loggerContext);
|
|
157
|
-
|
|
158
|
-
_context2.
|
|
158
|
+
broadworksIdpProxyUrl = ((_this$webex$internal$ = this.webex.internal.services._serviceUrls) === null || _this$webex$internal$ === void 0 ? void 0 : _this$webex$internal$.broadworksIdpProxy) || this.webex.internal.services.get(this.webex.internal.services._activeServices.broadworksIdpProxy);
|
|
159
|
+
_context2.prev = 3;
|
|
160
|
+
_context2.next = 6;
|
|
159
161
|
return this.webex.request({
|
|
160
|
-
uri: "".concat(
|
|
162
|
+
uri: "".concat(broadworksIdpProxyUrl).concat(_constants2.BW_TOKEN_FETCH_ENDPOINT),
|
|
161
163
|
method: _types2.HTTP_METHODS.GET
|
|
162
164
|
});
|
|
163
|
-
case
|
|
165
|
+
case 6:
|
|
164
166
|
bwTokenResponse = _context2.sent;
|
|
165
167
|
response = bwTokenResponse.body;
|
|
166
168
|
this.bwtoken = response[_constants.TOKEN][_constants.BEARER];
|
|
167
169
|
_Logger.default.log('Successfully fetched Broadworks token', loggerContext);
|
|
168
|
-
_context2.next =
|
|
170
|
+
_context2.next = 17;
|
|
169
171
|
break;
|
|
170
|
-
case
|
|
171
|
-
_context2.prev =
|
|
172
|
-
_context2.t0 = _context2["catch"](
|
|
172
|
+
case 12:
|
|
173
|
+
_context2.prev = 12;
|
|
174
|
+
_context2.t0 = _context2["catch"](3);
|
|
173
175
|
_Logger.default.error("Broadworks token exception: ".concat((0, _stringify.default)(_context2.t0)), loggerContext);
|
|
174
|
-
_context2.next =
|
|
176
|
+
_context2.next = 17;
|
|
175
177
|
return (0, _Utils.uploadLogs)();
|
|
176
|
-
case
|
|
178
|
+
case 17:
|
|
177
179
|
case "end":
|
|
178
180
|
return _context2.stop();
|
|
179
181
|
}
|
|
180
|
-
}, _callee2, this, [[
|
|
182
|
+
}, _callee2, this, [[3, 12]]);
|
|
181
183
|
}));
|
|
182
184
|
function getBwToken() {
|
|
183
185
|
return _getBwToken.apply(this, arguments);
|