alicezetion 1.8.4 → 1.8.6

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 (122) hide show
  1. package/.cache/replit/__replit_disk_meta.json +1 -1
  2. package/.cache/replit/modules.stamp +1 -0
  3. package/.cache/replit/nix/env.json +1 -1
  4. package/index.js +376 -210
  5. package/leiamnash/addExternalModule.js +15 -0
  6. package/leiamnash/addUserToGroup.js +77 -0
  7. package/leiamnash/changeAdminStatus.js +47 -0
  8. package/leiamnash/changeArchivedStatus.js +41 -0
  9. package/leiamnash/changeAvatar.js +127 -0
  10. package/leiamnash/changeBio.js +64 -0
  11. package/leiamnash/changeBlockedStatus.js +36 -0
  12. package/leiamnash/changeGroupImage.js +105 -0
  13. package/leiamnash/changeNickname.js +43 -0
  14. package/leiamnash/changeThreadColor.js +61 -0
  15. package/leiamnash/changeThreadEmoji.js +41 -0
  16. package/{src → leiamnash}/chat.js +3 -28
  17. package/leiamnash/createNewGroup.js +70 -0
  18. package/leiamnash/createPoll.js +59 -0
  19. package/leiamnash/deleteMessage.js +44 -0
  20. package/leiamnash/deleteThread.js +42 -0
  21. package/leiamnash/forwardAttachment.js +47 -0
  22. package/leiamnash/forwardMessage.js +0 -0
  23. package/leiamnash/getCurrentUserID.js +7 -0
  24. package/leiamnash/getEmojiUrl.js +27 -0
  25. package/leiamnash/getFriendsList.js +73 -0
  26. package/leiamnash/getInfoVideo.js +134 -0
  27. package/leiamnash/getThreadHistory.js +537 -0
  28. package/leiamnash/getThreadHistoryDeprecated.js +71 -0
  29. package/{src → leiamnash}/getThreadInfo.js +54 -70
  30. package/leiamnash/getThreadInfoDeprecated.js +56 -0
  31. package/leiamnash/getThreadList.js +213 -0
  32. package/leiamnash/getThreadListDeprecated.js +46 -0
  33. package/leiamnash/getThreadPictures.js +59 -0
  34. package/leiamnash/getUserID.js +61 -0
  35. package/leiamnash/getUserInfo.js +66 -0
  36. package/leiamnash/handleFriendRequest.js +46 -0
  37. package/leiamnash/handleMessageRequest.js +47 -0
  38. package/leiamnash/httpGet.js +47 -0
  39. package/leiamnash/httpPost.js +47 -0
  40. package/leiamnash/httpPostFormData.js +42 -0
  41. package/{src → leiamnash}/listenMqtt.js +6 -16
  42. package/leiamnash/logout.js +68 -0
  43. package/leiamnash/markAsDelivered.js +47 -0
  44. package/leiamnash/markAsRead.js +70 -0
  45. package/leiamnash/markAsReadAll.js +40 -0
  46. package/leiamnash/markAsSeen.js +48 -0
  47. package/leiamnash/muteThread.js +45 -0
  48. package/leiamnash/react.js +109 -0
  49. package/{src → leiamnash}/refreshFb_dtsg.js +1 -1
  50. package/leiamnash/removeUserFromGroup.js +45 -0
  51. package/leiamnash/resolvePhotoUrl.js +36 -0
  52. package/leiamnash/searchForThread.js +42 -0
  53. package/leiamnash/seen.js +40 -0
  54. package/leiamnash/sendMessage.js +315 -0
  55. package/leiamnash/sendTypingIndicator.js +70 -0
  56. package/leiamnash/setMessageReaction.js +103 -0
  57. package/leiamnash/setPostReaction.js +63 -0
  58. package/leiamnash/setTitle.js +70 -0
  59. package/leiamnash/threadColors.js +41 -0
  60. package/{src/getAccess.js → leiamnash/token.js} +2 -2
  61. package/leiamnash/unfriend.js +42 -0
  62. package/leiamnash/unsendMessage.js +39 -0
  63. package/leiamnash/uploadAttachment.js +96 -0
  64. package/package.json +3 -6
  65. package/replit.nix +4 -4
  66. package/utils.js +176 -119
  67. package/src/addExternalModule.js +0 -17
  68. package/src/addUserToGroup.js +0 -113
  69. package/src/changeAdminStatus.js +0 -79
  70. package/src/changeArchivedStatus.js +0 -55
  71. package/src/changeAvatar.js +0 -93
  72. package/src/changeBio.js +0 -77
  73. package/src/changeBlockedStatus.js +0 -47
  74. package/src/changeCover.js +0 -73
  75. package/src/changeGroupImage.js +0 -132
  76. package/src/changeName.js +0 -79
  77. package/src/changeNickname.js +0 -59
  78. package/src/changeThreadColor.js +0 -65
  79. package/src/changeThreadEmoji.js +0 -55
  80. package/src/createNewGroup.js +0 -86
  81. package/src/createPoll.js +0 -71
  82. package/src/data/getThreadInfo.json +0 -1
  83. package/src/deleteMessage.js +0 -56
  84. package/src/deleteThread.js +0 -56
  85. package/src/forwardAttachment.js +0 -60
  86. package/src/getAvatarUser.js +0 -78
  87. package/src/getCurrentUserID.js +0 -7
  88. package/src/getEmojiUrl.js +0 -29
  89. package/src/getFriendsList.js +0 -83
  90. package/src/getThreadHistory.js +0 -666
  91. package/src/getThreadList.js +0 -237
  92. package/src/getThreadPictures.js +0 -79
  93. package/src/getUserID.js +0 -66
  94. package/src/getUserInfo.js +0 -163
  95. package/src/handleFriendRequest.js +0 -61
  96. package/src/handleMessageRequest.js +0 -65
  97. package/src/httpGet.js +0 -57
  98. package/src/httpPost.js +0 -57
  99. package/src/httpPostFormData.js +0 -63
  100. package/src/listenNotification.js +0 -88
  101. package/src/logout.js +0 -275
  102. package/src/markAsDelivered.js +0 -58
  103. package/src/markAsRead.js +0 -80
  104. package/src/markAsReadAll.js +0 -50
  105. package/src/markAsSeen.js +0 -59
  106. package/src/muteThread.js +0 -52
  107. package/src/react.js +0 -117
  108. package/src/removeUserFromGroup.js +0 -79
  109. package/src/resolvePhotoUrl.js +0 -45
  110. package/src/searchForThread.js +0 -53
  111. package/src/searchStickers.js +0 -52
  112. package/src/seen.js +0 -50
  113. package/src/sendMessage.js +0 -477
  114. package/src/sendMessageMqtt.js +0 -316
  115. package/src/sendTypingIndicator.js +0 -103
  116. package/src/setMessageReaction.js +0 -117
  117. package/src/setPostReaction.js +0 -109
  118. package/src/setTitle.js +0 -86
  119. package/src/threadColors.js +0 -131
  120. package/src/unfriend.js +0 -52
  121. package/src/unsendMessage.js +0 -49
  122. /package/{src → leiamnash}/getMessage.js +0 -0
@@ -1,237 +0,0 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
- const log = require("npmlog");
5
-
6
- function formatEventReminders(reminder) {
7
- return {
8
- reminderID: reminder.id,
9
- eventCreatorID: reminder.lightweight_event_creator.id,
10
- time: reminder.time,
11
- eventType: reminder.lightweight_event_type.toLowerCase(),
12
- locationName: reminder.location_name,
13
- // @TODO verify this
14
- locationCoordinates: reminder.location_coordinates,
15
- locationPage: reminder.location_page,
16
- eventStatus: reminder.lightweight_event_status.toLowerCase(),
17
- note: reminder.note,
18
- repeatMode: reminder.repeat_mode.toLowerCase(),
19
- eventTitle: reminder.event_title,
20
- triggerMessage: reminder.trigger_message,
21
- secondsToNotifyBefore: reminder.seconds_to_notify_before,
22
- allowsRsvp: reminder.allows_rsvp,
23
- relatedEvent: reminder.related_event,
24
- members: reminder.event_reminder_members.edges.map(function (member) {
25
- return {
26
- memberID: member.node.id,
27
- state: member.guest_list_state.toLowerCase()
28
- };
29
- })
30
- };
31
- }
32
-
33
- function formatThreadGraphQLResponse(messageThread) {
34
- var threadID = messageThread.thread_key.thread_fbid
35
- ? messageThread.thread_key.thread_fbid
36
- : messageThread.thread_key.other_user_id;
37
-
38
- // Remove me
39
- var lastM = messageThread.last_message;
40
- var snippetID =
41
- lastM &&
42
- lastM.nodes &&
43
- lastM.nodes[0] &&
44
- lastM.nodes[0].message_sender &&
45
- lastM.nodes[0].message_sender.messaging_actor
46
- ? lastM.nodes[0].message_sender.messaging_actor.id
47
- : null;
48
- var snippetText =
49
- lastM && lastM.nodes && lastM.nodes[0] ? lastM.nodes[0].snippet : null;
50
- var lastR = messageThread.last_read_receipt;
51
- var lastReadTimestamp =
52
- lastR && lastR.nodes && lastR.nodes[0] && lastR.nodes[0].timestamp_precise
53
- ? lastR.nodes[0].timestamp_precise
54
- : null;
55
-
56
- return {
57
- threadID: threadID,
58
- threadName: messageThread.name,
59
- participantIDs: messageThread.all_participants.edges.map(d => d.node.messaging_actor.id),
60
- userInfo: messageThread.all_participants.edges.map(d => ({
61
- id: d.node.messaging_actor.id,
62
- name: d.node.messaging_actor.name,
63
- firstName: d.node.messaging_actor.short_name,
64
- vanity: d.node.messaging_actor.username,
65
- url: d.node.messaging_actor.url,
66
- thumbSrc: d.node.messaging_actor.big_image_src.uri,
67
- profileUrl: d.node.messaging_actor.big_image_src.uri,
68
- gender: d.node.messaging_actor.gender,
69
- type: d.node.messaging_actor.__typename,
70
- isFriend: d.node.messaging_actor.is_viewer_friend,
71
- isBirthday: !!d.node.messaging_actor.is_birthday //not sure?
72
- })),
73
- unreadCount: messageThread.unread_count,
74
- messageCount: messageThread.messages_count,
75
- timestamp: messageThread.updated_time_precise,
76
- muteUntil: messageThread.mute_until,
77
- isGroup: messageThread.thread_type == "GROUP",
78
- isSubscribed: messageThread.is_viewer_subscribed,
79
- isArchived: messageThread.has_viewer_archived,
80
- folder: messageThread.folder,
81
- cannotReplyReason: messageThread.cannot_reply_reason,
82
- eventReminders: messageThread.event_reminders
83
- ? messageThread.event_reminders.nodes.map(formatEventReminders)
84
- : null,
85
- emoji: messageThread.customization_info
86
- ? messageThread.customization_info.emoji
87
- : null,
88
- color:
89
- messageThread.customization_info &&
90
- messageThread.customization_info.outgoing_bubble_color
91
- ? messageThread.customization_info.outgoing_bubble_color.slice(2)
92
- : null,
93
- threadTheme: messageThread.thread_theme,
94
- nicknames:
95
- messageThread.customization_info &&
96
- messageThread.customization_info.participant_customizations
97
- ? messageThread.customization_info.participant_customizations.reduce(
98
- function (res, val) {
99
- if (val.nickname) res[val.participant_id] = val.nickname;
100
- return res;
101
- },
102
- {}
103
- )
104
- : {},
105
- adminIDs: messageThread.thread_admins,
106
- approvalMode: Boolean(messageThread.approval_mode),
107
- approvalQueue: messageThread.group_approval_queue.nodes.map(a => ({
108
- inviterID: a.inviter.id,
109
- requesterID: a.requester.id,
110
- timestamp: a.request_timestamp,
111
- request_source: a.request_source // @Undocumented
112
- })),
113
-
114
- // @Undocumented
115
- reactionsMuteMode: messageThread.reactions_mute_mode.toLowerCase(),
116
- mentionsMuteMode: messageThread.mentions_mute_mode.toLowerCase(),
117
- isPinProtected: messageThread.is_pin_protected,
118
- relatedPageThread: messageThread.related_page_thread,
119
-
120
- // @Legacy
121
- name: messageThread.name,
122
- snippet: snippetText,
123
- snippetSender: snippetID,
124
- snippetAttachments: [],
125
- serverTimestamp: messageThread.updated_time_precise,
126
- imageSrc: messageThread.image ? messageThread.image.uri : null,
127
- isCanonicalUser: messageThread.is_canonical_neo_user,
128
- isCanonical: messageThread.thread_type != "GROUP",
129
- recipientsLoadable: true,
130
- hasEmailParticipant: false,
131
- readOnly: false,
132
- canReply: messageThread.cannot_reply_reason == null,
133
- lastMessageTimestamp: messageThread.last_message
134
- ? messageThread.last_message.timestamp_precise
135
- : null,
136
- lastMessageType: "message",
137
- lastReadTimestamp: lastReadTimestamp,
138
- threadType: messageThread.thread_type == "GROUP" ? 2 : 1,
139
-
140
- // update in Wed, 13 Jul 2022 19:41:12 +0700
141
- inviteLink: {
142
- enable: messageThread.joinable_mode ? messageThread.joinable_mode.mode == 1 : false,
143
- link: messageThread.joinable_mode ? messageThread.joinable_mode.link : null
144
- }
145
- };
146
- }
147
-
148
- function formatThreadList(data) {
149
- // console.log(JSON.stringify(data.find(t => t.thread_key.thread_fbid === "5095817367161431"), null, 2));
150
- return data.map(t => formatThreadGraphQLResponse(t));
151
- }
152
-
153
- module.exports = function (defaultFuncs, api, ctx) {
154
- return function getThreadList(limit, timestamp, tags, callback) {
155
- if (!callback && (utils.getType(tags) === "Function" || utils.getType(tags) === "AsyncFunction")) {
156
- callback = tags;
157
- tags = [""];
158
- }
159
- if (utils.getType(limit) !== "Number" || !Number.isInteger(limit) || limit <= 0) {
160
- throw { error: "getThreadList: limit must be a positive integer" };
161
- }
162
- if (utils.getType(timestamp) !== "Null" &&
163
- (utils.getType(timestamp) !== "Number" || !Number.isInteger(timestamp))) {
164
- throw { error: "getThreadList: timestamp must be an integer or null" };
165
- }
166
- if (utils.getType(tags) === "String") {
167
- tags = [tags];
168
- }
169
- if (utils.getType(tags) !== "Array") {
170
- throw { error: "getThreadList: tags must be an array" };
171
- }
172
-
173
- var resolveFunc = function () { };
174
- var rejectFunc = function () { };
175
- var returnPromise = new Promise(function (resolve, reject) {
176
- resolveFunc = resolve;
177
- rejectFunc = reject;
178
- });
179
-
180
- if (utils.getType(callback) !== "Function" && utils.getType(callback) !== "AsyncFunction") {
181
- callback = function (err, data) {
182
- if (err) {
183
- return rejectFunc(err);
184
- }
185
- resolveFunc(data);
186
- };
187
- }
188
-
189
- const form = {
190
- "av": ctx.globalOptions.pageID,
191
- "queries": JSON.stringify({
192
- "o0": {
193
- // This doc_id was valid on 2020-07-20
194
- "doc_id": "3336396659757871",
195
- "query_params": {
196
- "limit": limit + (timestamp ? 1 : 0),
197
- "before": timestamp,
198
- "tags": tags,
199
- "includeDeliveryReceipts": true,
200
- "includeSeqID": false
201
- }
202
- }
203
- }),
204
- "batch_name": "MessengerGraphQLThreadlistFetcher"
205
- };
206
-
207
- defaultFuncs
208
- .post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form)
209
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
210
- .then((resData) => {
211
- if (resData[resData.length - 1].error_results > 0) {
212
- throw resData[0].o0.errors;
213
- }
214
-
215
- if (resData[resData.length - 1].successful_results === 0) {
216
- throw { error: "getThreadList: there was no successful_results", res: resData };
217
- }
218
-
219
- // When we ask for threads using timestamp from the previous request,
220
- // we are getting the last thread repeated as the first thread in this response.
221
- // .shift() gets rid of it
222
- // It is also the reason for increasing limit by 1 when timestamp is set
223
- // this way user asks for 10 threads, we are asking for 11,
224
- // but after removing the duplicated one, it is again 10
225
- if (timestamp) {
226
- resData[0].o0.data.viewer.message_threads.nodes.shift();
227
- }
228
- callback(null, formatThreadList(resData[0].o0.data.viewer.message_threads.nodes));
229
- })
230
- .catch((err) => {
231
- log.error("getThreadList", err);
232
- return callback(err);
233
- });
234
-
235
- return returnPromise;
236
- };
237
- };
@@ -1,79 +0,0 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
- const log = require("npmlog");
5
-
6
- module.exports = function (defaultFuncs, api, ctx) {
7
- return function getThreadPictures(threadID, offset, limit, callback) {
8
- let resolveFunc = function () { };
9
- let rejectFunc = function () { };
10
- const returnPromise = new Promise(function (resolve, reject) {
11
- resolveFunc = resolve;
12
- rejectFunc = reject;
13
- });
14
-
15
- if (!callback) {
16
- callback = function (err, friendList) {
17
- if (err) {
18
- return rejectFunc(err);
19
- }
20
- resolveFunc(friendList);
21
- };
22
- }
23
-
24
- let form = {
25
- thread_id: threadID,
26
- offset: offset,
27
- limit: limit
28
- };
29
-
30
- defaultFuncs
31
- .post(
32
- "https://www.facebook.com/ajax/messaging/attachments/sharedphotos.php",
33
- ctx.jar,
34
- form
35
- )
36
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
37
- .then(function (resData) {
38
- if (resData.error) {
39
- throw resData;
40
- }
41
- return Promise.all(
42
- resData.payload.imagesData.map(function (image) {
43
- form = {
44
- thread_id: threadID,
45
- image_id: image.fbid
46
- };
47
- return defaultFuncs
48
- .post(
49
- "https://www.facebook.com/ajax/messaging/attachments/sharedphotos.php",
50
- ctx.jar,
51
- form
52
- )
53
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
54
- .then(function (resData) {
55
- if (resData.error) {
56
- throw resData;
57
- }
58
- // the response is pretty messy
59
- const queryThreadID =
60
- resData.jsmods.require[0][3][1].query_metadata.query_path[0]
61
- .message_thread;
62
- const imageData =
63
- resData.jsmods.require[0][3][1].query_results[queryThreadID]
64
- .message_images.edges[0].node.image2;
65
- return imageData;
66
- });
67
- })
68
- );
69
- })
70
- .then(function (resData) {
71
- callback(null, resData);
72
- })
73
- .catch(function (err) {
74
- log.error("Error in getThreadPictures", err);
75
- callback(err);
76
- });
77
- return returnPromise;
78
- };
79
- };
package/src/getUserID.js DELETED
@@ -1,66 +0,0 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
- const log = require("npmlog");
5
-
6
- function formatData(data) {
7
- return {
8
- userID: utils.formatID(data.uid.toString()),
9
- photoUrl: data.photo,
10
- indexRank: data.index_rank,
11
- name: data.text,
12
- isVerified: data.is_verified,
13
- profileUrl: data.path,
14
- category: data.category,
15
- score: data.score,
16
- type: data.type
17
- };
18
- }
19
-
20
- module.exports = function (defaultFuncs, api, ctx) {
21
- return function getUserID(name, callback) {
22
- let resolveFunc = function () { };
23
- let rejectFunc = function () { };
24
- const returnPromise = new Promise(function (resolve, reject) {
25
- resolveFunc = resolve;
26
- rejectFunc = reject;
27
- });
28
-
29
- if (!callback) {
30
- callback = function (err, friendList) {
31
- if (err) {
32
- return rejectFunc(err);
33
- }
34
- resolveFunc(friendList);
35
- };
36
- }
37
-
38
- const form = {
39
- value: name.toLowerCase(),
40
- viewer: ctx.i_userID || ctx.userID,
41
- rsp: "search",
42
- context: "search",
43
- path: "/home.php",
44
- request_id: utils.getGUID()
45
- };
46
-
47
- defaultFuncs
48
- .get("https://www.facebook.com/ajax/typeahead/search.php", ctx.jar, form)
49
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
50
- .then(function (resData) {
51
- if (resData.error) {
52
- throw resData;
53
- }
54
-
55
- const data = resData.payload.entries;
56
-
57
- callback(null, data.map(formatData));
58
- })
59
- .catch(function (err) {
60
- log.error("getUserID", err);
61
- return callback(err);
62
- });
63
-
64
- return returnPromise;
65
- };
66
- };
@@ -1,163 +0,0 @@
1
- "use strict";
2
-
3
- var utils = require("../utils");
4
- var log = require("npmlog");
5
-
6
- function formatData(data) {
7
- var retObj = {};
8
-
9
- for (var prop in data) {
10
- // eslint-disable-next-line no-prototype-builtins
11
- if (data.hasOwnProperty(prop)) {
12
- var innerObj = data[prop];
13
- retObj[prop] = {
14
- name: innerObj.name,
15
- firstName: innerObj.firstName,
16
- vanity: innerObj.vanity,
17
- thumbSrc: innerObj.thumbSrc,
18
- profileUrl: innerObj.uri,
19
- gender: innerObj.gender,
20
- type: innerObj.type,
21
- isFriend: innerObj.is_friend,
22
- isBirthday: !!innerObj.is_birthday,
23
- searchTokens: innerObj.searchTokens,
24
- alternateName: innerObj.alternateName,
25
- isBlocked: innerObj.is_blocked
26
- };
27
- }
28
- }
29
-
30
- return retObj;
31
- }
32
-
33
- function formatDataGraph(userData, userIDs) {
34
- var Obj = {};
35
-
36
- userIDs.map(function (c, i) {
37
- var res = userData[i];
38
- return !res.data ? Obj[c] = {
39
- id: c,
40
- name: res.name,
41
- shortName: res.short_name || null,
42
- verified: res.is_verified,
43
- email: res.email || null,
44
- website: res.website || null,
45
- follower: !!res.subscribers ? res.subscribers.summary.total_count : null,
46
- lover: res.significant_other || null,
47
- cover: !!res.cover ? res.cover.source : null,
48
- first_name: res.first_name || null,
49
- middle_name: res.middle_name || null,
50
- last_name: res.last_name || null,
51
- about: res.about || null,
52
- birthday: res.birthday || null,
53
- locale: res.locale,
54
- languages: res.languages || [],
55
- gender: res.gender || null,
56
- hometown: !!res.hometown ? res.hometown.name : null,
57
- profileUrl: res.link || null,
58
- location: !!res.location ? res.location.name : null,
59
- username: res.username || null,
60
- avatar: !!res.picture ? res.picture.data.url : null,
61
- relationship_status: !!res.relationship_status ? res.relationship_status : null,
62
- subscribers: !!res.subscribers ? res.subscribers.data : null,
63
- favorite_athletes: !!res.favorite_athletes ? res.favorite_athletes.map(function (v) {
64
- return {
65
- name: v.name
66
- }
67
- }) : [],
68
- education: !!res.education ? res.education.map(function(v) {
69
- return {
70
- type: v.type,
71
- school: v.school.name
72
- }
73
- }) : [],
74
- work: !!res.work ? res.work : []
75
- } : null;
76
- });
77
-
78
- return Obj;
79
- }
80
-
81
- module.exports = function (http, api, ctx) {
82
- function handleGetData(userIDs) {
83
- var cb;
84
- var uploads = [];
85
- var rtPromise = new Promise(function (resolve, reject) {
86
- cb = (error, data) => data ? resolve(data) : reject(error);
87
- });
88
-
89
- // Getting User Data From GraphAPI In The Loop
90
- userIDs.map(function (c) {
91
- var mainPromise = utils
92
- .get('https://graph.facebook.com/' + c, ctx.jar, {
93
- fields: 'name,is_verified,cover,first_name,email,about,birthday,gender,website,hometown,link,location,quotes,relationship_status,significant_other,username,subscribers.limite(0),short_name,last_name,middle_name,education,picture,work,languages,favorite_athletes,locale',
94
- access_token: ctx.access_token
95
- }, ctx.globalOptions)
96
- .then(function (res) {
97
- return res.body.indexOf('<') < 0 ? JSON.parse(res.body) : { data: 404 };
98
- })
99
- .catch(cb);
100
- return uploads.push(mainPromise);
101
- });
102
-
103
- // resolve all promise
104
- Promise
105
- .all(uploads)
106
- .then(function (userData) {
107
- return cb(null, formatDataGraph(userData, userIDs));
108
- })
109
- .catch(function (err) {
110
- return cb(err);
111
- });
112
-
113
- return rtPromise;
114
- }
115
-
116
- return function getUserInfo(userIDs, useGraph, callback) {
117
- var cb;
118
- var rtPromise = new Promise(function (resolve, reject) {
119
- cb = (error, data) => data ? resolve(data) : reject(error);
120
- });
121
-
122
- if (typeof useGraph == 'function') {
123
- callback = useGraph;
124
- useGraph = false;
125
- }
126
- if (typeof callback == 'function') cb = callback;
127
- if (Array.isArray(userIDs) == false) userIDs = [userIDs];
128
-
129
- if (useGraph) {
130
- if (!ctx.access_token) {
131
- var err = 'Cant get access_token, please let the "useGraph" feature is false';
132
- log.error('getUserInfo', err);
133
- return cb(err);
134
- }
135
- handleGetData(userIDs)
136
- .then(function (res) {
137
- return cb(null, res);
138
- })
139
- .catch(function (err) {
140
- log.error('getUserInfo', err);
141
- return cb(err);
142
- });
143
- } else {
144
- var form = {};
145
- userIDs.map(function(v, i) {
146
- form["ids[" + i + "]"] = v;
147
- });
148
- http
149
- .post("https://www.facebook.com/chat/user_info/", ctx.jar, form)
150
- .then(utils.parseAndCheckLogin(ctx, http))
151
- .then(function(res) {
152
- if (res.error || res.errors) throw res;
153
- return cb(null, formatData(res.payload.profiles));
154
- })
155
- .catch(function(err) {
156
- log.error("getUserInfo", err);
157
- return cb(err);
158
- });
159
- }
160
-
161
- return rtPromise;
162
- }
163
- }
@@ -1,61 +0,0 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
- const log = require("npmlog");
5
-
6
- module.exports = function (defaultFuncs, api, ctx) {
7
- return function handleFriendRequest(userID, accept, callback) {
8
- if (utils.getType(accept) !== "Boolean") {
9
- throw {
10
- error: "Please pass a boolean as a second argument."
11
- };
12
- }
13
-
14
- let resolveFunc = function () { };
15
- let rejectFunc = function () { };
16
- const returnPromise = new Promise(function (resolve, reject) {
17
- resolveFunc = resolve;
18
- rejectFunc = reject;
19
- });
20
-
21
- if (!callback) {
22
- callback = function (err, friendList) {
23
- if (err) {
24
- return rejectFunc(err);
25
- }
26
- resolveFunc(friendList);
27
- };
28
- }
29
-
30
- const form = {
31
- viewer_id: ctx.i_userID || ctx.userID,
32
- "frefs[0]": "jwl",
33
- floc: "friend_center_requests",
34
- ref: "/reqs.php",
35
- action: (accept ? "confirm" : "reject")
36
- };
37
-
38
- defaultFuncs
39
- .post(
40
- "https://www.facebook.com/requests/friends/ajax/",
41
- ctx.jar,
42
- form
43
- )
44
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
45
- .then(function (resData) {
46
- if (resData.payload.err) {
47
- throw {
48
- err: resData.payload.err
49
- };
50
- }
51
-
52
- return callback();
53
- })
54
- .catch(function (err) {
55
- log.error("handleFriendRequest", err);
56
- return callback(err);
57
- });
58
-
59
- return returnPromise;
60
- };
61
- };
@@ -1,65 +0,0 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
- const log = require("npmlog");
5
-
6
- module.exports = function (defaultFuncs, api, ctx) {
7
- return function handleMessageRequest(threadID, accept, callback) {
8
- if (utils.getType(accept) !== "Boolean") {
9
- throw {
10
- error: "Please pass a boolean as a second argument."
11
- };
12
- }
13
-
14
- let resolveFunc = function () { };
15
- let rejectFunc = function () { };
16
- const returnPromise = new Promise(function (resolve, reject) {
17
- resolveFunc = resolve;
18
- rejectFunc = reject;
19
- });
20
-
21
- if (!callback) {
22
- callback = function (err, friendList) {
23
- if (err) {
24
- return rejectFunc(err);
25
- }
26
- resolveFunc(friendList);
27
- };
28
- }
29
-
30
- const form = {
31
- client: "mercury"
32
- };
33
-
34
- if (utils.getType(threadID) !== "Array") {
35
- threadID = [threadID];
36
- }
37
-
38
- const messageBox = accept ? "inbox" : "other";
39
-
40
- for (let i = 0; i < threadID.length; i++) {
41
- form[messageBox + "[" + i + "]"] = threadID[i];
42
- }
43
-
44
- defaultFuncs
45
- .post(
46
- "https://www.facebook.com/ajax/mercury/move_thread.php",
47
- ctx.jar,
48
- form
49
- )
50
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
51
- .then(function (resData) {
52
- if (resData.error) {
53
- throw resData;
54
- }
55
-
56
- return callback();
57
- })
58
- .catch(function (err) {
59
- log.error("handleMessageRequest", err);
60
- return callback(err);
61
- });
62
-
63
- return returnPromise;
64
- };
65
- };