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.
- package/.cache/replit/__replit_disk_meta.json +1 -1
- package/.cache/replit/modules.stamp +1 -0
- package/.cache/replit/nix/env.json +1 -1
- package/index.js +376 -210
- package/leiamnash/addExternalModule.js +15 -0
- package/leiamnash/addUserToGroup.js +77 -0
- package/leiamnash/changeAdminStatus.js +47 -0
- package/leiamnash/changeArchivedStatus.js +41 -0
- package/leiamnash/changeAvatar.js +127 -0
- package/leiamnash/changeBio.js +64 -0
- package/leiamnash/changeBlockedStatus.js +36 -0
- package/leiamnash/changeGroupImage.js +105 -0
- package/leiamnash/changeNickname.js +43 -0
- package/leiamnash/changeThreadColor.js +61 -0
- package/leiamnash/changeThreadEmoji.js +41 -0
- package/{src → leiamnash}/chat.js +3 -28
- package/leiamnash/createNewGroup.js +70 -0
- package/leiamnash/createPoll.js +59 -0
- package/leiamnash/deleteMessage.js +44 -0
- package/leiamnash/deleteThread.js +42 -0
- package/leiamnash/forwardAttachment.js +47 -0
- package/leiamnash/forwardMessage.js +0 -0
- package/leiamnash/getCurrentUserID.js +7 -0
- package/leiamnash/getEmojiUrl.js +27 -0
- package/leiamnash/getFriendsList.js +73 -0
- package/leiamnash/getInfoVideo.js +134 -0
- package/leiamnash/getThreadHistory.js +537 -0
- package/leiamnash/getThreadHistoryDeprecated.js +71 -0
- package/{src → leiamnash}/getThreadInfo.js +54 -70
- package/leiamnash/getThreadInfoDeprecated.js +56 -0
- package/leiamnash/getThreadList.js +213 -0
- package/leiamnash/getThreadListDeprecated.js +46 -0
- package/leiamnash/getThreadPictures.js +59 -0
- package/leiamnash/getUserID.js +61 -0
- package/leiamnash/getUserInfo.js +66 -0
- package/leiamnash/handleFriendRequest.js +46 -0
- package/leiamnash/handleMessageRequest.js +47 -0
- package/leiamnash/httpGet.js +47 -0
- package/leiamnash/httpPost.js +47 -0
- package/leiamnash/httpPostFormData.js +42 -0
- package/{src → leiamnash}/listenMqtt.js +6 -16
- package/leiamnash/logout.js +68 -0
- package/leiamnash/markAsDelivered.js +47 -0
- package/leiamnash/markAsRead.js +70 -0
- package/leiamnash/markAsReadAll.js +40 -0
- package/leiamnash/markAsSeen.js +48 -0
- package/leiamnash/muteThread.js +45 -0
- package/leiamnash/react.js +109 -0
- package/{src → leiamnash}/refreshFb_dtsg.js +1 -1
- package/leiamnash/removeUserFromGroup.js +45 -0
- package/leiamnash/resolvePhotoUrl.js +36 -0
- package/leiamnash/searchForThread.js +42 -0
- package/leiamnash/seen.js +40 -0
- package/leiamnash/sendMessage.js +315 -0
- package/leiamnash/sendTypingIndicator.js +70 -0
- package/leiamnash/setMessageReaction.js +103 -0
- package/leiamnash/setPostReaction.js +63 -0
- package/leiamnash/setTitle.js +70 -0
- package/leiamnash/threadColors.js +41 -0
- package/{src/getAccess.js → leiamnash/token.js} +2 -2
- package/leiamnash/unfriend.js +42 -0
- package/leiamnash/unsendMessage.js +39 -0
- package/leiamnash/uploadAttachment.js +96 -0
- package/package.json +3 -6
- package/replit.nix +4 -4
- package/utils.js +176 -119
- package/src/addExternalModule.js +0 -17
- package/src/addUserToGroup.js +0 -113
- package/src/changeAdminStatus.js +0 -79
- package/src/changeArchivedStatus.js +0 -55
- package/src/changeAvatar.js +0 -93
- package/src/changeBio.js +0 -77
- package/src/changeBlockedStatus.js +0 -47
- package/src/changeCover.js +0 -73
- package/src/changeGroupImage.js +0 -132
- package/src/changeName.js +0 -79
- package/src/changeNickname.js +0 -59
- package/src/changeThreadColor.js +0 -65
- package/src/changeThreadEmoji.js +0 -55
- package/src/createNewGroup.js +0 -86
- package/src/createPoll.js +0 -71
- package/src/data/getThreadInfo.json +0 -1
- package/src/deleteMessage.js +0 -56
- package/src/deleteThread.js +0 -56
- package/src/forwardAttachment.js +0 -60
- package/src/getAvatarUser.js +0 -78
- package/src/getCurrentUserID.js +0 -7
- package/src/getEmojiUrl.js +0 -29
- package/src/getFriendsList.js +0 -83
- package/src/getThreadHistory.js +0 -666
- package/src/getThreadList.js +0 -237
- package/src/getThreadPictures.js +0 -79
- package/src/getUserID.js +0 -66
- package/src/getUserInfo.js +0 -163
- package/src/handleFriendRequest.js +0 -61
- package/src/handleMessageRequest.js +0 -65
- package/src/httpGet.js +0 -57
- package/src/httpPost.js +0 -57
- package/src/httpPostFormData.js +0 -63
- package/src/listenNotification.js +0 -88
- package/src/logout.js +0 -275
- package/src/markAsDelivered.js +0 -58
- package/src/markAsRead.js +0 -80
- package/src/markAsReadAll.js +0 -50
- package/src/markAsSeen.js +0 -59
- package/src/muteThread.js +0 -52
- package/src/react.js +0 -117
- package/src/removeUserFromGroup.js +0 -79
- package/src/resolvePhotoUrl.js +0 -45
- package/src/searchForThread.js +0 -53
- package/src/searchStickers.js +0 -52
- package/src/seen.js +0 -50
- package/src/sendMessage.js +0 -477
- package/src/sendMessageMqtt.js +0 -316
- package/src/sendTypingIndicator.js +0 -103
- package/src/setMessageReaction.js +0 -117
- package/src/setPostReaction.js +0 -109
- package/src/setTitle.js +0 -86
- package/src/threadColors.js +0 -131
- package/src/unfriend.js +0 -52
- package/src/unsendMessage.js +0 -49
- /package/{src → leiamnash}/getMessage.js +0 -0
package/src/getThreadList.js
DELETED
@@ -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
|
-
};
|
package/src/getThreadPictures.js
DELETED
@@ -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
|
-
};
|
package/src/getUserInfo.js
DELETED
@@ -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
|
-
};
|