zalo-toolkit 1.0.0 → 1.0.2

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 (155) hide show
  1. package/dist/apis/sendMessage.d.ts +5 -0
  2. package/dist/apis/sendMessage.js +31 -11
  3. package/dist/cjs/apis/acceptFriendRequest.cjs +33 -0
  4. package/dist/cjs/apis/addGroupBlockedMember.cjs +33 -0
  5. package/dist/cjs/apis/addGroupDeputy.cjs +36 -0
  6. package/dist/cjs/apis/addPollOptions.cjs +31 -0
  7. package/dist/cjs/apis/addQuickMessage.cjs +65 -0
  8. package/dist/cjs/apis/addReaction.cjs +297 -0
  9. package/dist/cjs/apis/addUnreadMark.cjs +65 -0
  10. package/dist/cjs/apis/addUserToGroup.cjs +39 -0
  11. package/dist/cjs/apis/blockUser.cjs +33 -0
  12. package/dist/cjs/apis/blockViewFeed.cjs +35 -0
  13. package/dist/cjs/apis/changeAccountAvatar.cjs +56 -0
  14. package/dist/cjs/apis/changeFriendAlias.cjs +32 -0
  15. package/dist/cjs/apis/changeGroupAvatar.cjs +47 -0
  16. package/dist/cjs/apis/changeGroupName.cjs +37 -0
  17. package/dist/cjs/apis/changeGroupOwner.cjs +36 -0
  18. package/dist/cjs/apis/createAutoReply.cjs +42 -0
  19. package/dist/cjs/apis/createCatalog.cjs +34 -0
  20. package/dist/cjs/apis/createGroup.cjs +48 -0
  21. package/dist/cjs/apis/createNote.cjs +52 -0
  22. package/dist/cjs/apis/createPoll.cjs +45 -0
  23. package/dist/cjs/apis/createProductCatalog.cjs +55 -0
  24. package/dist/cjs/apis/createReminder.cjs +76 -0
  25. package/dist/cjs/apis/custom.cjs +19 -0
  26. package/dist/cjs/apis/deleteAutoReply.cjs +34 -0
  27. package/dist/cjs/apis/deleteAvatar.cjs +32 -0
  28. package/dist/cjs/apis/deleteCatalog.cjs +33 -0
  29. package/dist/cjs/apis/deleteChat.cjs +63 -0
  30. package/dist/cjs/apis/deleteGroupInviteBox.cjs +32 -0
  31. package/dist/cjs/apis/deleteMessage.cjs +65 -0
  32. package/dist/cjs/apis/deleteProductCatalog.cjs +36 -0
  33. package/dist/cjs/apis/disableGroupLink.cjs +29 -0
  34. package/dist/cjs/apis/disperseGroup.cjs +33 -0
  35. package/dist/cjs/apis/editNote.cjs +51 -0
  36. package/dist/cjs/apis/editReminder.cjs +74 -0
  37. package/dist/cjs/apis/enableGroupLink.cjs +30 -0
  38. package/dist/cjs/apis/fetchAccountInfo.cjs +15 -0
  39. package/dist/cjs/apis/findUser.cjs +45 -0
  40. package/dist/cjs/apis/forwardAttachment.cjs +85 -0
  41. package/dist/cjs/apis/forwardMessage.cjs +122 -0
  42. package/dist/cjs/apis/getAliasList.cjs +33 -0
  43. package/dist/cjs/apis/getAllFriends.cjs +37 -0
  44. package/dist/cjs/apis/getAllGroups.cjs +15 -0
  45. package/dist/cjs/apis/getArchivedChatList.cjs +28 -0
  46. package/dist/cjs/apis/getAutoDeleteChat.cjs +26 -0
  47. package/dist/cjs/apis/getAutoReplyList.cjs +29 -0
  48. package/dist/cjs/apis/getAvatarList.cjs +33 -0
  49. package/dist/cjs/apis/getBizAccount.cjs +32 -0
  50. package/dist/cjs/apis/getCatalogList.cjs +37 -0
  51. package/dist/cjs/apis/getContext.cjs +9 -0
  52. package/dist/cjs/apis/getCookie.cjs +14 -0
  53. package/dist/cjs/apis/getFriendBoardList.cjs +31 -0
  54. package/dist/cjs/apis/getFriendOnlines.cjs +40 -0
  55. package/dist/cjs/apis/getFriendRecommendations.cjs +32 -0
  56. package/dist/cjs/apis/getFriendRequestStatus.cjs +30 -0
  57. package/dist/cjs/apis/getGroupBlockedMember.cjs +34 -0
  58. package/dist/cjs/apis/getGroupInfo.cjs +37 -0
  59. package/dist/cjs/apis/getGroupInviteBoxInfo.cjs +43 -0
  60. package/dist/cjs/apis/getGroupInviteBoxList.cjs +36 -0
  61. package/dist/cjs/apis/getGroupLinkDetail.cjs +30 -0
  62. package/dist/cjs/apis/getGroupLinkInfo.cjs +33 -0
  63. package/dist/cjs/apis/getGroupMembersInfo.cjs +29 -0
  64. package/dist/cjs/apis/getHiddenConversations.cjs +28 -0
  65. package/dist/cjs/apis/getLabels.cjs +33 -0
  66. package/dist/cjs/apis/getLastMessage.cjs +25 -0
  67. package/dist/cjs/apis/getListBoard.cjs +58 -0
  68. package/dist/cjs/apis/getListReminder.cjs +60 -0
  69. package/dist/cjs/apis/getMute.cjs +27 -0
  70. package/dist/cjs/apis/getOwnId.cjs +9 -0
  71. package/dist/cjs/apis/getPendingGroupMembers.cjs +32 -0
  72. package/dist/cjs/apis/getPinConversations.cjs +27 -0
  73. package/dist/cjs/apis/getPollDetail.cjs +35 -0
  74. package/dist/cjs/apis/getProductCatalogList.cjs +38 -0
  75. package/dist/cjs/apis/getQR.cjs +34 -0
  76. package/dist/cjs/apis/getQuickMessageList.cjs +29 -0
  77. package/dist/cjs/apis/getRecommendFriends.cjs +25 -0
  78. package/dist/cjs/apis/getRelatedFriendGroup.cjs +35 -0
  79. package/dist/cjs/apis/getReminder.cjs +30 -0
  80. package/dist/cjs/apis/getReminderResponses.cjs +29 -0
  81. package/dist/cjs/apis/getSentFriendRequest.cjs +29 -0
  82. package/dist/cjs/apis/getSettings.cjs +25 -0
  83. package/dist/cjs/apis/getStickers.cjs +45 -0
  84. package/dist/cjs/apis/getStickersDetail.cjs +45 -0
  85. package/dist/cjs/apis/getUnreadMark.cjs +35 -0
  86. package/dist/cjs/apis/getUserInfo.cjs +47 -0
  87. package/dist/cjs/apis/inviteUserToGroups.cjs +35 -0
  88. package/dist/cjs/apis/joinGroupInviteBox.cjs +30 -0
  89. package/dist/cjs/apis/joinGroupLink.cjs +32 -0
  90. package/dist/cjs/apis/keepAlive.cjs +27 -0
  91. package/dist/cjs/apis/lastOnline.cjs +31 -0
  92. package/dist/cjs/apis/leaveGroup.cjs +38 -0
  93. package/dist/cjs/apis/lockPoll.cjs +33 -0
  94. package/dist/cjs/apis/parseLink.cjs +32 -0
  95. package/dist/cjs/apis/rejectFriendRequest.cjs +32 -0
  96. package/dist/cjs/apis/removeFriend.cjs +33 -0
  97. package/dist/cjs/apis/removeFriendAlias.cjs +29 -0
  98. package/dist/cjs/apis/removeGroupBlockedMember.cjs +33 -0
  99. package/dist/cjs/apis/removeGroupDeputy.cjs +35 -0
  100. package/dist/cjs/apis/removeQuickMessage.cjs +32 -0
  101. package/dist/cjs/apis/removeReminder.cjs +53 -0
  102. package/dist/cjs/apis/removeUnreadMark.cjs +63 -0
  103. package/dist/cjs/apis/removeUserFromGroup.cjs +39 -0
  104. package/dist/cjs/apis/resetHiddenConversPin.cjs +25 -0
  105. package/dist/cjs/apis/reuseAvatar.cjs +31 -0
  106. package/dist/cjs/apis/reviewPendingMemberRequest.cjs +33 -11
  107. package/dist/cjs/apis/sendBankCard.cjs +50 -0
  108. package/dist/cjs/apis/sendCard.cjs +72 -0
  109. package/dist/cjs/apis/sendDeliveredEvent.cjs +68 -0
  110. package/dist/cjs/apis/sendFriendRequest.cjs +44 -0
  111. package/dist/cjs/apis/sendLink.cjs +70 -0
  112. package/dist/cjs/apis/sendMessage.cjs +437 -11
  113. package/dist/cjs/apis/sendReport.cjs +48 -10
  114. package/dist/cjs/apis/sendSeenEvent.cjs +76 -0
  115. package/dist/cjs/apis/sendSticker.cjs +69 -0
  116. package/dist/cjs/apis/sendTypingEvent.cjs +46 -0
  117. package/dist/cjs/apis/sendVideo.cjs +131 -0
  118. package/dist/cjs/apis/sendVoice.cjs +86 -0
  119. package/dist/cjs/apis/setArchivedConversations.cjs +39 -0
  120. package/dist/cjs/apis/setHiddenConversations.cjs +52 -0
  121. package/dist/cjs/apis/setMute.cjs +57 -10
  122. package/dist/cjs/apis/setPinnedConversations.cjs +47 -0
  123. package/dist/cjs/apis/sharePoll.cjs +33 -0
  124. package/dist/cjs/apis/unblockUser.cjs +33 -0
  125. package/dist/cjs/apis/undo.cjs +55 -0
  126. package/dist/cjs/apis/undoFriendRequest.cjs +32 -0
  127. package/dist/cjs/apis/updateActiveStatus.cjs +32 -0
  128. package/dist/cjs/apis/updateAutoDeleteChat.cjs +35 -10
  129. package/dist/cjs/apis/updateAutoReply.cjs +43 -0
  130. package/dist/cjs/apis/updateCatalog.cjs +35 -0
  131. package/dist/cjs/apis/updateGroupSettings.cjs +48 -0
  132. package/dist/cjs/apis/updateHiddenConversPin.cjs +35 -0
  133. package/dist/cjs/apis/updateLabels.cjs +39 -0
  134. package/dist/cjs/apis/updateLang.cjs +27 -11
  135. package/dist/cjs/apis/updateProductCatalog.cjs +56 -0
  136. package/dist/cjs/apis/updateProfile.cjs +48 -0
  137. package/dist/cjs/apis/updateQuickMessage.cjs +66 -0
  138. package/dist/cjs/apis/updateSettings.cjs +77 -11
  139. package/dist/cjs/apis/uploadAttachment.cjs +208 -0
  140. package/dist/cjs/apis/uploadProductPhoto.cjs +50 -0
  141. package/dist/cjs/apis/votePoll.cjs +34 -0
  142. package/dist/cjs/apis.cjs +292 -0
  143. package/dist/cjs/context.cjs +15 -0
  144. package/dist/cjs/core/enums/common.cjs +14 -0
  145. package/dist/cjs/core/utils/index.cjs +33 -0
  146. package/dist/cjs/models/GroupEvent.cjs +2 -4
  147. package/dist/cjs/utils.cjs +229 -3
  148. package/dist/cjs/zalo.cjs +18 -7
  149. package/dist/index.d.ts +1 -0
  150. package/dist/models/GroupEvent.d.ts +2 -2
  151. package/dist/models/GroupEvent.js +2 -4
  152. package/dist/models/Message.d.ts +6 -0
  153. package/dist/zalo.d.ts +17 -10
  154. package/dist/zalo.js +19 -8
  155. package/package.json +1 -1
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const blockUserFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.friend[0]}/api/friend/block`);
8
+ /**
9
+ * Block a User
10
+ *
11
+ * @param userId The ID of the User to block
12
+ *
13
+ * @throws ZaloApiError
14
+ */
15
+ return async function blockUser(userId) {
16
+ const params = {
17
+ fid: userId,
18
+ imei: ctx.imei,
19
+ };
20
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
21
+ if (!encryptedParams)
22
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
23
+ const response = await utils.request(serviceURL, {
24
+ method: 'POST',
25
+ body: new URLSearchParams({
26
+ params: encryptedParams,
27
+ }),
28
+ });
29
+ return utils.resolve(response);
30
+ };
31
+ });
32
+
33
+ exports.blockUserFactory = blockUserFactory;
@@ -0,0 +1,35 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const blockViewFeedFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.friend[0]}/api/friend/feed/block`);
8
+ /**
9
+ * Block/Unblock friend view feed by ID
10
+ *
11
+ * @param isBlockFeed Boolean to block/unblock view feed
12
+ * @param userId User ID to block/unblock view feed
13
+ *
14
+ * @throws {ZaloApiError}
15
+ */
16
+ return async function blockViewFeed(isBlockFeed, userId) {
17
+ const params = {
18
+ fid: userId,
19
+ isBlockFeed: isBlockFeed ? 1 : 0,
20
+ imei: ctx.imei,
21
+ };
22
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
23
+ if (!encryptedParams)
24
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
25
+ const response = await utils.request(serviceURL, {
26
+ method: 'POST',
27
+ body: new URLSearchParams({
28
+ params: encryptedParams,
29
+ }),
30
+ });
31
+ return utils.resolve(response);
32
+ };
33
+ });
34
+
35
+ exports.blockViewFeedFactory = blockViewFeedFactory;
@@ -0,0 +1,56 @@
1
+ 'use strict';
2
+
3
+ var FormData = require('form-data');
4
+ var index = require('../core/utils/index.cjs');
5
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
6
+ var utils = require('../utils.cjs');
7
+
8
+ const changeAccountAvatarFactory = utils.apiFactory()((api, ctx, utils$1) => {
9
+ const serviceURL = utils$1.makeURL(`${api.zpwServiceMap.file[0]}/api/profile/upavatar`);
10
+ /**
11
+ * Change account avatar
12
+ *
13
+ * @param avatarPath Attachment source, string
14
+ *
15
+ * @throws {ZaloApiError | ZaloApiMissingImageMetadataGetter}
16
+ */
17
+ return async function changeAccountAvatar(avatarPath) {
18
+ const file = await index.getFileUpload(avatarPath);
19
+ const imageMetaData = await utils.getImageMetaData(file);
20
+ const fileSize = imageMetaData.totalSize || 0;
21
+ const params = {
22
+ avatarSize: 120,
23
+ clientId: String(ctx.uid + utils.formatTime('%H:%M %d/%m/%Y')),
24
+ language: ctx.language,
25
+ metaData: JSON.stringify({
26
+ origin: {
27
+ width: imageMetaData.width || 1080,
28
+ height: imageMetaData.height || 1080,
29
+ },
30
+ processed: {
31
+ width: imageMetaData.width || 1080,
32
+ height: imageMetaData.height || 1080,
33
+ size: fileSize,
34
+ },
35
+ }),
36
+ };
37
+ const formData = new FormData();
38
+ formData.append('fileContent', file.buffer, {
39
+ filename: 'blob',
40
+ contentType: 'image/jpeg',
41
+ });
42
+ const encryptedParams = utils$1.encodeAES(JSON.stringify(params));
43
+ if (!encryptedParams)
44
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
45
+ const response = await utils$1.request(utils$1.makeURL(serviceURL, {
46
+ params: encryptedParams,
47
+ }), {
48
+ method: 'POST',
49
+ headers: formData.getHeaders(),
50
+ body: formData.getBuffer(),
51
+ });
52
+ return utils$1.resolve(response);
53
+ };
54
+ });
55
+
56
+ exports.changeAccountAvatarFactory = changeAccountAvatarFactory;
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const changeFriendAliasFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.alias[0]}/api/alias/update`);
8
+ /**
9
+ * Change friend's alias
10
+ *
11
+ * @param alias new alias (nickname - bietdanh)
12
+ * @param friendId friend id
13
+ *
14
+ * @throws {ZaloApiError}
15
+ */
16
+ return async function changeFriendAlias(alias, friendId) {
17
+ const params = {
18
+ friendId: friendId,
19
+ alias: alias,
20
+ imei: ctx.imei,
21
+ };
22
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
23
+ if (!encryptedParams)
24
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
25
+ const response = await utils.request(utils.makeURL(serviceURL, { params: encryptedParams }), {
26
+ method: 'GET',
27
+ });
28
+ return utils.resolve(response);
29
+ };
30
+ });
31
+
32
+ exports.changeFriendAliasFactory = changeFriendAliasFactory;
@@ -0,0 +1,47 @@
1
+ 'use strict';
2
+
3
+ var FormData = require('form-data');
4
+ var fs = require('node:fs');
5
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
6
+ var utils = require('../utils.cjs');
7
+ var index = require('../core/utils/index.cjs');
8
+
9
+ const changeGroupAvatarFactory = utils.apiFactory()((api, ctx, utils$1) => {
10
+ const serviceURL = utils$1.makeURL(`${api.zpwServiceMap.file[0]}/api/group/upavatar`);
11
+ /**
12
+ * Change group avatar
13
+ *
14
+ * @param groupId Group ID
15
+ * @param avatarPath Path to the image file
16
+ *
17
+ * @throws ZaloApiError
18
+ */
19
+ return async function changeGroupAvatar(groupId, avatarPath) {
20
+ const params = {
21
+ grid: groupId,
22
+ avatarSize: 120,
23
+ clientId: `g${groupId}${utils.getFullTimeFromMillisecond(new Date().getTime())}`,
24
+ imei: ctx.imei,
25
+ };
26
+ const file = await index.getFileUpload(avatarPath);
27
+ const imageMetaData = await utils.getImageMetaData(file);
28
+ params.originWidth = imageMetaData.width || 1080;
29
+ params.originHeight = imageMetaData.height || 1080;
30
+ const formData = new FormData();
31
+ formData.append('fileContent', fs.readFileSync(avatarPath), {
32
+ filename: 'blob',
33
+ contentType: 'image/jpeg',
34
+ });
35
+ const encryptedParams = utils$1.encodeAES(JSON.stringify(params));
36
+ if (!encryptedParams)
37
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
38
+ const response = await utils$1.request(serviceURL + `&params=${encodeURIComponent(encryptedParams)}`, {
39
+ method: 'POST',
40
+ headers: formData.getHeaders(),
41
+ body: formData.getBuffer(),
42
+ });
43
+ return utils$1.resolve(response);
44
+ };
45
+ });
46
+
47
+ exports.changeGroupAvatarFactory = changeGroupAvatarFactory;
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const changeGroupNameFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.group[0]}/api/group/updateinfo`);
8
+ /**
9
+ * Change group name
10
+ *
11
+ * @param groupId Group ID
12
+ * @param name New group name
13
+ *
14
+ * @throws ZaloApiError
15
+ */
16
+ return async function changeGroupName(groupId, name) {
17
+ if (name.length == 0)
18
+ name = Date.now().toString();
19
+ const params = {
20
+ grid: groupId,
21
+ gname: name,
22
+ imei: ctx.imei,
23
+ };
24
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
25
+ if (!encryptedParams)
26
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
27
+ const response = await utils.request(serviceURL, {
28
+ method: 'POST',
29
+ body: new URLSearchParams({
30
+ params: encryptedParams,
31
+ }),
32
+ });
33
+ return utils.resolve(response);
34
+ };
35
+ });
36
+
37
+ exports.changeGroupNameFactory = changeGroupNameFactory;
@@ -0,0 +1,36 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const changeGroupOwnerFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.group[0]}/api/group/change-owner`);
8
+ /**
9
+ * Change group owner
10
+ *
11
+ * @param userId UserId for change group owner
12
+ * @param threadId ThreadId for change group owner
13
+ * @notes Change stupid is lose group rights. Because Web and APP not change key gold (admin main) <(")
14
+ *
15
+ * @throws ZaloApiError
16
+ *
17
+ */
18
+ return async function changeGroupOwner(userId, threadId) {
19
+ const params = {
20
+ grid: threadId,
21
+ newAdminId: userId,
22
+ imei: ctx.imei,
23
+ language: ctx.language,
24
+ };
25
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
26
+ if (!encryptedParams)
27
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
28
+ const urlWithParams = `${serviceURL}&params=${encodeURIComponent(encryptedParams)}`;
29
+ const response = await utils.request(urlWithParams, {
30
+ method: 'GET',
31
+ });
32
+ return utils.resolve(response);
33
+ };
34
+ });
35
+
36
+ exports.changeGroupOwnerFactory = changeGroupOwnerFactory;
@@ -0,0 +1,42 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const createAutoReplyFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.auto_reply[0]}/api/autoreply/create`);
8
+ /**
9
+ * Create auto reply
10
+ *
11
+ * @param payload payload
12
+ *
13
+ * @note this API used for zBusiness
14
+ * @throws {ZaloApiError}
15
+ */
16
+ return async function createAutoReply(payload) {
17
+ const uids = Array.isArray(payload.uids) ? payload.uids : [payload.uids];
18
+ const resultUids = payload.scope === 2 || payload.scope === 3 ? uids : [];
19
+ const params = {
20
+ cliLang: ctx.language,
21
+ enable: payload.isEnable,
22
+ content: payload.content,
23
+ startTime: payload.startTime,
24
+ endTime: payload.endTime,
25
+ recurrence: ['RRULE:FREQ=DAILY;'],
26
+ scope: payload.scope,
27
+ uids: resultUids,
28
+ };
29
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
30
+ if (!encryptedParams)
31
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
32
+ const response = await utils.request(serviceURL, {
33
+ method: 'POST',
34
+ body: new URLSearchParams({
35
+ params: encryptedParams,
36
+ }),
37
+ });
38
+ return utils.resolve(response);
39
+ };
40
+ });
41
+
42
+ exports.createAutoReplyFactory = createAutoReplyFactory;
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const createCatalogFactory = utils.apiFactory()((api, _, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.catalog[0]}/api/prodcatalog/catalog/create`);
8
+ /**
9
+ * Create catalog?
10
+ *
11
+ * @param catalogName catalog name
12
+ *
13
+ * @note this API is used for zBusiness
14
+ * @throws {ZaloApiError}
15
+ */
16
+ return async function createCatalog(catalogName) {
17
+ const params = {
18
+ catalog_name: catalogName,
19
+ catalog_photo: '',
20
+ };
21
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
22
+ if (!encryptedParams)
23
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
24
+ const response = await utils.request(serviceURL, {
25
+ method: 'POST',
26
+ body: new URLSearchParams({
27
+ params: encryptedParams,
28
+ }),
29
+ });
30
+ return utils.resolve(response);
31
+ };
32
+ });
33
+
34
+ exports.createCatalogFactory = createCatalogFactory;
@@ -0,0 +1,48 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const createGroupFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.group[0]}/api/group/create/v2`);
8
+ /**
9
+ * Create a new group
10
+ *
11
+ * @param options Group options
12
+ *
13
+ * @throws {ZaloApiError}
14
+ */
15
+ return async function createGroup(options) {
16
+ if (options.members.length == 0)
17
+ throw new ZaloApiError.ZaloApiError('Group must have at least one member');
18
+ const params = {
19
+ clientId: Date.now(),
20
+ gname: String(Date.now()),
21
+ gdesc: null,
22
+ members: options.members,
23
+ membersTypes: options.members.map(() => -1),
24
+ nameChanged: 0,
25
+ createLink: 1,
26
+ clientLang: ctx.language,
27
+ imei: ctx.imei,
28
+ zsource: 601,
29
+ };
30
+ if (options.name && options.name.length > 0) {
31
+ params.gname = options.name;
32
+ params.nameChanged = 1;
33
+ }
34
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
35
+ if (!encryptedParams)
36
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt message');
37
+ const response = await utils.request(utils.makeURL(serviceURL, { params: encryptedParams }), {
38
+ method: 'POST',
39
+ });
40
+ const data = await utils.resolve(response);
41
+ options.avatarSource = options.avatarSource;
42
+ if (options.avatarSource)
43
+ await api.changeGroupAvatar(options.avatarSource, data.groupId).catch(utils.logger.error);
44
+ return data;
45
+ };
46
+ });
47
+
48
+ exports.createGroupFactory = createGroupFactory;
@@ -0,0 +1,52 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const createNoteFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.group_board[0]}/api/board/topic/createv2`);
8
+ /**
9
+ * Create a note in a group
10
+ *
11
+ * @param options note options
12
+ * @param options.title note title
13
+ * @param options.pinAct pin action (pin note)
14
+ * @param groupId group id
15
+ *
16
+ * @throws {ZaloApiError}
17
+ */
18
+ return async function createNote(options, groupId) {
19
+ const params = {
20
+ grid: groupId,
21
+ type: 0,
22
+ color: -16777216,
23
+ emoji: '',
24
+ startTime: -1,
25
+ duration: -1,
26
+ params: JSON.stringify({
27
+ title: options.title,
28
+ }),
29
+ repeat: 0,
30
+ src: 1,
31
+ imei: ctx.imei,
32
+ pinAct: options.pinAct ? 1 : 0,
33
+ };
34
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
35
+ if (!encryptedParams)
36
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
37
+ const response = await utils.request(serviceURL, {
38
+ method: 'POST',
39
+ body: new URLSearchParams({
40
+ params: encryptedParams,
41
+ }),
42
+ });
43
+ return utils.resolve(response, (result) => {
44
+ if (typeof result.data.params === 'string') {
45
+ result.data.params = JSON.parse(result.data.params);
46
+ }
47
+ return result.data;
48
+ });
49
+ };
50
+ });
51
+
52
+ exports.createNoteFactory = createNoteFactory;
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const createPollFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.group[0]}/api/poll/create`);
8
+ /**
9
+ * Create a poll in a group.
10
+ *
11
+ * @param options Poll options
12
+ * @param groupId Group ID to create poll from
13
+ *
14
+ * @throws ZaloApiError
15
+ */
16
+ return async function createPoll(options, groupId) {
17
+ var _a;
18
+ const params = {
19
+ group_id: groupId,
20
+ question: options.question,
21
+ options: options.options,
22
+ expired_time: (_a = options.expiredTime) !== null && _a !== void 0 ? _a : 0,
23
+ pinAct: !!options.pinAct,
24
+ allow_multi_choices: !!options.allowMultiChoices,
25
+ allow_add_new_option: !!options.allowAddNewOption,
26
+ is_hide_vote_preview: !!options.hideVotePreview,
27
+ is_anonymous: !!options.isAnonymous,
28
+ poll_type: 0,
29
+ src: 1,
30
+ imei: ctx.imei,
31
+ };
32
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
33
+ if (!encryptedParams)
34
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
35
+ const response = await utils.request(serviceURL, {
36
+ method: 'POST',
37
+ body: new URLSearchParams({
38
+ params: encryptedParams,
39
+ }),
40
+ });
41
+ return utils.resolve(response);
42
+ };
43
+ });
44
+
45
+ exports.createPollFactory = createPollFactory;
@@ -0,0 +1,55 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const createProductCatalogFactory = utils.apiFactory()((api, _, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.catalog[0]}/api/prodcatalog/product/create`);
8
+ /**
9
+ * Create product catalog?
10
+ *
11
+ * @param payload payload
12
+ *
13
+ * @note this API is used for zBussiness - Maximum 5 media files are supported
14
+ * @throws {ZaloApiError}
15
+ */
16
+ return async function createProductCatalog(payload) {
17
+ const productPhoto = payload.product_photos || [];
18
+ if (payload.files && payload.files.length == 0) {
19
+ if (payload.files.length > 5) {
20
+ throw new ZaloApiError.ZaloApiError('Maximum 5 media files are allowed');
21
+ }
22
+ for (const mediaFile of payload.files) {
23
+ const uploadMedia = await api.uploadProductPhoto({
24
+ url: mediaFile,
25
+ });
26
+ const url = uploadMedia.normalUrl || uploadMedia.hdUrl;
27
+ productPhoto.push(url);
28
+ }
29
+ }
30
+ if (productPhoto.length > 5) {
31
+ throw new ZaloApiError.ZaloApiError('Maximum 5 media files are allowed');
32
+ }
33
+ const params = {
34
+ product_name: payload.productName,
35
+ price: payload.price,
36
+ description: payload.description,
37
+ product_photos: productPhoto,
38
+ catalog_id: payload.catalogId,
39
+ currency_unit: '₫', // $
40
+ create_time: Date.now(),
41
+ };
42
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
43
+ if (!encryptedParams)
44
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
45
+ const response = await utils.request(serviceURL, {
46
+ method: 'POST',
47
+ body: new URLSearchParams({
48
+ params: encryptedParams,
49
+ }),
50
+ });
51
+ return utils.resolve(response);
52
+ };
53
+ });
54
+
55
+ exports.createProductCatalogFactory = createProductCatalogFactory;
@@ -0,0 +1,76 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ require('../models/AutoReply.cjs');
5
+ require('../models/Board.cjs');
6
+ var Enum = require('../models/Enum.cjs');
7
+ require('../models/FriendEvent.cjs');
8
+ require('../models/Group.cjs');
9
+ require('../models/GroupEvent.cjs');
10
+ var utils = require('../utils.cjs');
11
+ require('../models/Reaction.cjs');
12
+ var Reminder = require('../models/Reminder.cjs');
13
+ require('../models/ZBusiness.cjs');
14
+
15
+ const createReminderFactory = utils.apiFactory()((api, ctx, utils) => {
16
+ const serviceURL = {
17
+ [Enum.ThreadType.User]: utils.makeURL(`${api.zpwServiceMap.group_board[0]}/api/board/oneone/create`),
18
+ [Enum.ThreadType.Group]: utils.makeURL(`${api.zpwServiceMap.group_board[0]}/api/board/topic/createv2`),
19
+ };
20
+ /**
21
+ * Create a reminder in a group
22
+ *
23
+ * @param options reminder options
24
+ * @param threadId Group ID to create note from
25
+ * @param type Thread type (User or Group)
26
+ *
27
+ * @throws {ZaloApiError}
28
+ */
29
+ return async function createReminder(options, threadId, type = Enum.ThreadType.User) {
30
+ var _a, _b, _c, _d, _e, _f;
31
+ const params = type === Enum.ThreadType.User
32
+ ? {
33
+ objectData: JSON.stringify({
34
+ toUid: threadId,
35
+ type: 0,
36
+ color: -16245706,
37
+ emoji: (_a = options.emoji) !== null && _a !== void 0 ? _a : '⏰',
38
+ startTime: (_b = options.startTime) !== null && _b !== void 0 ? _b : Date.now(),
39
+ duration: -1,
40
+ params: { title: options.title },
41
+ needPin: false,
42
+ repeat: (_c = options.repeat) !== null && _c !== void 0 ? _c : Reminder.ReminderRepeatMode.None,
43
+ creatorUid: ctx.uid, // Note: for some reason, you can put any valid UID here instead of your own and it still works, atleast for mobile
44
+ src: 1,
45
+ }),
46
+ imei: ctx.imei,
47
+ }
48
+ : {
49
+ grid: threadId,
50
+ type: 0,
51
+ color: -16245706,
52
+ emoji: (_d = options.emoji) !== null && _d !== void 0 ? _d : '⏰',
53
+ startTime: (_e = options.startTime) !== null && _e !== void 0 ? _e : Date.now(),
54
+ duration: -1,
55
+ params: JSON.stringify({
56
+ title: options.title,
57
+ }),
58
+ repeat: (_f = options.repeat) !== null && _f !== void 0 ? _f : Reminder.ReminderRepeatMode.None,
59
+ src: 1,
60
+ imei: ctx.imei,
61
+ pinAct: 0,
62
+ };
63
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
64
+ if (!encryptedParams)
65
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
66
+ const response = await utils.request(serviceURL[type], {
67
+ method: 'POST',
68
+ body: new URLSearchParams({
69
+ params: encryptedParams,
70
+ }),
71
+ });
72
+ return utils.resolve(response);
73
+ };
74
+ });
75
+
76
+ exports.createReminderFactory = createReminderFactory;
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ var utils = require('../utils.cjs');
4
+
5
+ /* eslint-disable */
6
+ const customFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ return function custom(name, callback) {
8
+ Object.defineProperty(api, name, {
9
+ value: function (props) {
10
+ return callback({ ctx, utils, props });
11
+ },
12
+ writable: false,
13
+ enumerable: false,
14
+ configurable: false,
15
+ });
16
+ };
17
+ });
18
+
19
+ exports.customFactory = customFactory;