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,35 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const getRelatedFriendGroupFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.friend[0]}/api/friend/group/related`);
8
+ /**
9
+ * Get related friend group
10
+ *
11
+ * @param friendId friend ids
12
+ *
13
+ * @note this API is used for zBusiness
14
+ * @throws {ZaloApiError}
15
+ */
16
+ return async function getRelatedFriendGroup(friendId) {
17
+ const friendIds = Array.isArray(friendId) ? friendId : [friendId];
18
+ const params = {
19
+ friend_ids: JSON.stringify(friendIds),
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.getRelatedFriendGroupFactory = getRelatedFriendGroupFactory;
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const getReminderFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.group_board[0]}/api/board/topic/getReminder`);
8
+ /**
9
+ * Get reminder details from a group
10
+ *
11
+ * @param reminderId Reminder ID
12
+ *
13
+ * @throws {ZaloApiError}
14
+ */
15
+ return async function getReminder(reminderId) {
16
+ const params = {
17
+ eventId: reminderId,
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(utils.makeURL(serviceURL, { params: encryptedParams }), {
24
+ method: 'GET',
25
+ });
26
+ return utils.resolve(response);
27
+ };
28
+ });
29
+
30
+ exports.getReminderFactory = getReminderFactory;
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const getReminderResponsesFactory = utils.apiFactory()((api, _ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.group_board[0]}/api/board/topic/listResponseEvent`);
8
+ /**
9
+ * Get reminder responses
10
+ *
11
+ * @param reminderId reminder id
12
+ *
13
+ * @throws {ZaloApiError}
14
+ */
15
+ return async function getReminderResponses(reminderId) {
16
+ const params = {
17
+ eventId: reminderId,
18
+ };
19
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
20
+ if (!encryptedParams)
21
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
22
+ const response = await utils.request(utils.makeURL(serviceURL, { params: encryptedParams }), {
23
+ method: 'GET',
24
+ });
25
+ return utils.resolve(response);
26
+ };
27
+ });
28
+
29
+ exports.getReminderResponsesFactory = getReminderResponsesFactory;
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const getSentFriendRequestFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.friend[0]}/api/friend/requested/list`);
8
+ /**
9
+ * Get friend requested
10
+ *
11
+ * @note Zalo might throw an error with code 112 if you have no friend requests.
12
+ *
13
+ * @throws {ZaloApiError}
14
+ */
15
+ return async function getSentFriendRequest() {
16
+ const params = {
17
+ imei: ctx.imei,
18
+ };
19
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
20
+ if (!encryptedParams)
21
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
22
+ const response = await utils.request(utils.makeURL(serviceURL, { params: encryptedParams }), {
23
+ method: 'GET',
24
+ });
25
+ return utils.resolve(response);
26
+ };
27
+ });
28
+
29
+ exports.getSentFriendRequestFactory = getSentFriendRequestFactory;
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const getSettingsFactory = utils.apiFactory()((_api, _ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`https://wpa.chat.zalo.me/api/setting/me`);
8
+ /**
9
+ * Get my account settings
10
+ *
11
+ * @throws {ZaloApiError}
12
+ */
13
+ return async function getSettings() {
14
+ const params = {};
15
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
16
+ if (!encryptedParams)
17
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
18
+ const response = await utils.request(utils.makeURL(serviceURL, { params: encryptedParams }), {
19
+ method: 'GET',
20
+ });
21
+ return utils.resolve(response);
22
+ };
23
+ });
24
+
25
+ exports.getSettingsFactory = getSettingsFactory;
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const getStickersFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.sticker}/api/message/sticker`);
8
+ /**
9
+ * Get stickers by keyword
10
+ *
11
+ * @param keyword Keyword to search for
12
+ * @returns Sticker IDs
13
+ *
14
+ * @throws {ZaloApiError}
15
+ */
16
+ return async function getStickers(keyword) {
17
+ if (!keyword)
18
+ throw new ZaloApiError.ZaloApiError('Missing keyword');
19
+ const params = {
20
+ keyword: keyword,
21
+ gif: 1,
22
+ guggy: 0,
23
+ imei: ctx.imei,
24
+ };
25
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
26
+ if (!encryptedParams)
27
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt message');
28
+ const finalServiceUrl = new URL(serviceURL);
29
+ finalServiceUrl.pathname = finalServiceUrl.pathname + '/suggest/stickers';
30
+ const response = await utils.request(utils.makeURL(finalServiceUrl.toString(), {
31
+ params: encryptedParams,
32
+ }));
33
+ return utils.resolve(response, (result) => {
34
+ const suggestions = result.data;
35
+ const stickerIds = [];
36
+ // @TODO: Implement these
37
+ // suggestions.sugg_guggy, suggestions.sugg_gif
38
+ if (suggestions.sugg_sticker)
39
+ suggestions.sugg_sticker.forEach((sticker) => stickerIds.push(sticker.sticker_id));
40
+ return stickerIds;
41
+ });
42
+ };
43
+ });
44
+
45
+ exports.getStickersFactory = getStickersFactory;
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const getStickersDetailFactory = utils.apiFactory()((api, ctx, utils$1) => {
7
+ const serviceURL = utils$1.makeURL(`${api.zpwServiceMap.sticker}/api/message/sticker/sticker_detail`);
8
+ /**
9
+ * Get stickers detail by sticker IDs
10
+ *
11
+ * @param stickerIds Sticker IDs to search for
12
+ *
13
+ * @throws {ZaloApiError}
14
+ */
15
+ return async function getStickersDetail(stickerIds) {
16
+ if (!stickerIds)
17
+ throw new ZaloApiError.ZaloApiError('Missing sticker id');
18
+ if (!Array.isArray(stickerIds))
19
+ stickerIds = [stickerIds];
20
+ if (stickerIds.length == 0)
21
+ throw new ZaloApiError.ZaloApiError('Missing sticker id');
22
+ const stickers = [];
23
+ const tasks = stickerIds.map((stickerId) => getStickerDetail(stickerId));
24
+ const tasksResult = await Promise.allSettled(tasks);
25
+ tasksResult.forEach((result) => {
26
+ if (result.status === 'fulfilled')
27
+ stickers.push(result.value);
28
+ });
29
+ return stickers;
30
+ };
31
+ async function getStickerDetail(stickerId) {
32
+ const params = {
33
+ sid: stickerId,
34
+ };
35
+ const encryptedParams = utils$1.encodeAES(JSON.stringify(params));
36
+ if (!encryptedParams)
37
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt message');
38
+ const response = await utils$1.request(utils$1.makeURL(serviceURL, {
39
+ params: encryptedParams,
40
+ }));
41
+ return utils.resolveResponse(ctx, response);
42
+ }
43
+ });
44
+
45
+ exports.getStickersDetailFactory = getStickersDetailFactory;
@@ -0,0 +1,35 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const getUnreadMarkFactory = utils.apiFactory()((api, _, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.conversation[0]}/api/conv/getUnreadMark`);
8
+ /**
9
+ * Get unread mark
10
+ *
11
+ * @throws {ZaloApiError}
12
+ *
13
+ */
14
+ return async function getUnreadMark() {
15
+ const params = {};
16
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
17
+ if (!encryptedParams)
18
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
19
+ const response = await utils.request(utils.makeURL(serviceURL, { params: encryptedParams }), {
20
+ method: 'GET',
21
+ });
22
+ return utils.resolve(response, (result) => {
23
+ const data = result.data;
24
+ if (typeof data.data === 'string') {
25
+ return {
26
+ data: JSON.parse(data.data),
27
+ status: data.status,
28
+ };
29
+ }
30
+ return data;
31
+ });
32
+ };
33
+ });
34
+
35
+ exports.getUnreadMarkFactory = getUnreadMarkFactory;
@@ -0,0 +1,47 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const getUserInfoFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.profile[0]}/api/social/friend/getprofiles/v2`);
8
+ /**
9
+ * Get user info using user id
10
+ *
11
+ * @param userId user id
12
+ *
13
+ * @throws {ZaloApiError}
14
+ */
15
+ return async function getUserInfo(userId) {
16
+ if (!userId)
17
+ throw new ZaloApiError.ZaloApiError('Missing user id');
18
+ if (!Array.isArray(userId))
19
+ userId = [userId];
20
+ userId = userId.map((id) => {
21
+ if (id.split('_').length > 1) {
22
+ return id;
23
+ }
24
+ return `${id}_0`;
25
+ });
26
+ const params = {
27
+ phonebook_version: ctx.extraVer.phonebook,
28
+ friend_pversion_map: userId,
29
+ avatar_size: 120,
30
+ language: ctx.language,
31
+ show_online_status: 1,
32
+ imei: ctx.imei,
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);
44
+ };
45
+ });
46
+
47
+ exports.getUserInfoFactory = getUserInfoFactory;
@@ -0,0 +1,35 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const inviteUserToGroupsFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.group[0]}/api/group/invite/multi`);
8
+ /**
9
+ * Invite user to group
10
+ *
11
+ * @param groupId group ID(s)
12
+ * @param memberId member ID
13
+ *
14
+ * @throws {ZaloApiError}
15
+ *
16
+ */
17
+ return async function inviteUserToGroups(userId, groupId) {
18
+ const params = {
19
+ grids: Array.isArray(groupId) ? groupId : [groupId],
20
+ member: userId,
21
+ memberType: -1,
22
+ srcInteraction: 2,
23
+ clientLang: 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 response = await utils.request(utils.makeURL(serviceURL, { params: encryptedParams }), {
29
+ method: 'GET',
30
+ });
31
+ return utils.resolve(response);
32
+ };
33
+ });
34
+
35
+ exports.inviteUserToGroupsFactory = inviteUserToGroupsFactory;
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const joinGroupInviteBoxFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.group[0]}/api/group/inv-box/join`);
8
+ /**
9
+ * Join group invite box
10
+ *
11
+ * @param groupId - The group id
12
+ *
13
+ * @throws {ZaloApiError}
14
+ */
15
+ return async function joinGroupInviteBox(groupId) {
16
+ const params = {
17
+ grid: groupId,
18
+ lang: ctx.language,
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(utils.makeURL(serviceURL, { params: encryptedParams }), {
24
+ method: 'GET',
25
+ });
26
+ return utils.resolve(response);
27
+ };
28
+ });
29
+
30
+ exports.joinGroupInviteBoxFactory = joinGroupInviteBoxFactory;
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const joinGroupLinkFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.group[0]}/api/group/link/join`);
8
+ /**
9
+ * Join group via invite link
10
+ *
11
+ * @note Zalo might throw an error with code 240 if the group enabled membership approval, 178 if you are already a member.
12
+ *
13
+ * @param link - The link join group
14
+ *
15
+ * @throws {ZaloApiError}
16
+ */
17
+ return async function joinGroupLink(link) {
18
+ const params = {
19
+ link: link,
20
+ clientLang: ctx.language,
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.joinGroupLinkFactory = joinGroupLinkFactory;
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const keepAliveFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.chat[0]}/keepalive`);
8
+ /**
9
+ * Keep Alive?
10
+ *
11
+ * @throws {ZaloApiError}
12
+ */
13
+ return async function keepAlive() {
14
+ const params = {
15
+ imei: ctx.imei,
16
+ };
17
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
18
+ if (!encryptedParams)
19
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
20
+ const response = await utils.request(utils.makeURL(serviceURL, { params: encryptedParams }), {
21
+ method: 'GET',
22
+ });
23
+ return utils.resolve(response, undefined, false);
24
+ };
25
+ });
26
+
27
+ exports.keepAliveFactory = keepAliveFactory;
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const lastOnlineFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.profile[0]}/api/social/profile/lastOnline`);
8
+ /**
9
+ * Get last online
10
+ *
11
+ * @param uid User ID
12
+ *
13
+ * @throws {ZaloApiError}
14
+ */
15
+ return async function lastOnline(uid) {
16
+ const params = {
17
+ uid: uid,
18
+ conv_type: 1,
19
+ imei: ctx.imei,
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(utils.makeURL(serviceURL, { params: encryptedParams }), {
25
+ method: 'GET',
26
+ });
27
+ return utils.resolve(response);
28
+ };
29
+ });
30
+
31
+ exports.lastOnlineFactory = lastOnlineFactory;
@@ -0,0 +1,38 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const leaveGroupFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.group[0]}/api/group/leave`);
8
+ /**
9
+ * Leave group
10
+ *
11
+ * @param groupId - groupId to leave
12
+ * @param silent - Turn on/off silent leave group
13
+ *
14
+ * @note Zalo might throw an error with code 166 if you are not a member of the group
15
+ *
16
+ * @throws {ZaloApiError}
17
+ */
18
+ return async function leaveGroup(groupId, silent = false) {
19
+ const requestParams = {
20
+ grids: [groupId], // API only supports leaving one group at a time
21
+ imei: ctx.imei,
22
+ silent: silent ? 1 : 0,
23
+ language: ctx.language,
24
+ };
25
+ const encryptedParams = utils.encodeAES(JSON.stringify(requestParams));
26
+ if (!encryptedParams)
27
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
28
+ const response = await utils.request(serviceURL, {
29
+ method: 'POST',
30
+ body: new URLSearchParams({
31
+ params: encryptedParams,
32
+ }),
33
+ });
34
+ return utils.resolve(response);
35
+ };
36
+ });
37
+
38
+ exports.leaveGroupFactory = leaveGroupFactory;
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const lockPollFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.group[0]}/api/poll/end`);
8
+ /**
9
+ * Lock a poll, preventing further votes.
10
+ *
11
+ * @param pollId Poll id to lock
12
+ *
13
+ * @throws {ZaloApiError}
14
+ */
15
+ return async function lockPoll(pollId) {
16
+ const params = {
17
+ poll_id: pollId,
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.lockPollFactory = lockPollFactory;
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const parseLinkFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.file[0]}/api/message/parselink`);
8
+ /**
9
+ * Parse link
10
+ *
11
+ * @param link link to parse
12
+ *
13
+ * @throws {ZaloApiError}
14
+ *
15
+ */
16
+ return async function parseLink(link) {
17
+ const params = {
18
+ link,
19
+ version: 1, // version 0 is not available errorMaps || version 1 is errorMaps (for response)
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.parseLinkFactory = parseLinkFactory;
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const rejectFriendRequestFactory = utils.apiFactory()((api, _ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.friend[0]}/api/friend/reject`);
8
+ /**
9
+ * Reject a friend request from a User
10
+ *
11
+ * @param friendId
12
+ *
13
+ * @throws {ZaloApiError}
14
+ */
15
+ return async function rejectFriendRequest(friendId) {
16
+ const params = {
17
+ fid: friendId,
18
+ };
19
+ const encryptedParams = utils.encodeAES(JSON.stringify(params));
20
+ if (!encryptedParams)
21
+ throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
22
+ const response = await utils.request(serviceURL, {
23
+ method: 'POST',
24
+ body: new URLSearchParams({
25
+ params: encryptedParams,
26
+ }),
27
+ });
28
+ return utils.resolve(response);
29
+ };
30
+ });
31
+
32
+ exports.rejectFriendRequestFactory = rejectFriendRequestFactory;
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ var ZaloApiError = require('../Errors/ZaloApiError.cjs');
4
+ var utils = require('../utils.cjs');
5
+
6
+ const removeFriendFactory = utils.apiFactory()((api, ctx, utils) => {
7
+ const serviceURL = utils.makeURL(`${api.zpwServiceMap.friend[0]}/api/friend/remove`);
8
+ /**
9
+ * Remove friend
10
+ *
11
+ * @param friendId - ID of the friend to remove
12
+ *
13
+ * @throws {ZaloApiError}
14
+ */
15
+ return async function removeFriend(friendId) {
16
+ const params = {
17
+ fid: friendId,
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.removeFriendFactory = removeFriendFactory;