alicezetion 1.8.4 → 1.8.5

Sign up to get free protection for your applications and to get access to all the features.
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 +375 -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/leiamnash/unfriend.js +42 -0
  61. package/leiamnash/unsendMessage.js +39 -0
  62. package/leiamnash/uploadAttachment.js +96 -0
  63. package/package.json +3 -6
  64. package/replit.nix +4 -4
  65. package/utils.js +176 -135
  66. package/src/addExternalModule.js +0 -17
  67. package/src/addUserToGroup.js +0 -113
  68. package/src/changeAdminStatus.js +0 -79
  69. package/src/changeArchivedStatus.js +0 -55
  70. package/src/changeAvatar.js +0 -93
  71. package/src/changeBio.js +0 -77
  72. package/src/changeBlockedStatus.js +0 -47
  73. package/src/changeCover.js +0 -73
  74. package/src/changeGroupImage.js +0 -132
  75. package/src/changeName.js +0 -79
  76. package/src/changeNickname.js +0 -59
  77. package/src/changeThreadColor.js +0 -65
  78. package/src/changeThreadEmoji.js +0 -55
  79. package/src/createNewGroup.js +0 -86
  80. package/src/createPoll.js +0 -71
  81. package/src/data/getThreadInfo.json +0 -1
  82. package/src/deleteMessage.js +0 -56
  83. package/src/deleteThread.js +0 -56
  84. package/src/forwardAttachment.js +0 -60
  85. package/src/getAccess.js +0 -112
  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
- };