bb-fca 2.0.2 → 2.0.3
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/dist/deltas/apis/posting/friend.js +84 -0
- package/dist/deltas/apis/posting/friend.js.map +1 -1
- package/dist/deltas/apis/users/changeBio.js +61 -0
- package/dist/deltas/apis/users/changeBio.js.map +1 -0
- package/dist/deltas/apis/users/uploadAvatar.js +174 -0
- package/dist/deltas/apis/users/uploadAvatar.js.map +1 -0
- package/dist/deltas/apis/users/uploadCover.js +165 -0
- package/dist/deltas/apis/users/uploadCover.js.map +1 -0
- package/dist/types/deltas/apis/posting/friend.d.ts +16 -0
- package/dist/types/deltas/apis/users/changeBio.d.ts +10 -0
- package/dist/types/deltas/apis/users/uploadAvatar.d.ts +11 -0
- package/dist/types/deltas/apis/users/uploadCover.d.ts +15 -0
- package/package.json +1 -1
- package/src/deltas/apis/posting/friend.ts +90 -0
- package/src/deltas/apis/users/changeBio.ts +68 -0
- package/src/deltas/apis/users/uploadAvatar.ts +172 -0
- package/src/deltas/apis/users/uploadCover.ts +167 -0
|
@@ -269,6 +269,90 @@ function default_1(defaultFuncs, api, ctx) {
|
|
|
269
269
|
throw err;
|
|
270
270
|
}
|
|
271
271
|
},
|
|
272
|
+
/**
|
|
273
|
+
* Cancels a sent friend request (hủy lời mời kết bạn đã gửi).
|
|
274
|
+
* @async
|
|
275
|
+
* @param {string} userID The ID of the user whose friend request is to be cancelled.
|
|
276
|
+
* @returns {Promise<Object>} A promise that resolves to the API response data upon successful cancellation.
|
|
277
|
+
* @throws {Error} If the userID is missing or the API request fails.
|
|
278
|
+
*/
|
|
279
|
+
cancelRequest: async function (userID) {
|
|
280
|
+
try {
|
|
281
|
+
if (!userID)
|
|
282
|
+
throw new Error('userID is required.');
|
|
283
|
+
const variables = {
|
|
284
|
+
input: {
|
|
285
|
+
cancelled_friend_requestee_id: userID,
|
|
286
|
+
click_correlation_id: Date.now().toString(),
|
|
287
|
+
click_proof_validation_result: '{"validated":true}',
|
|
288
|
+
friending_channel: 'PROFILE_BUTTON',
|
|
289
|
+
actor_id: ctx.userID,
|
|
290
|
+
client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
|
|
291
|
+
},
|
|
292
|
+
scale: 1,
|
|
293
|
+
};
|
|
294
|
+
const form = {
|
|
295
|
+
av: ctx.userID,
|
|
296
|
+
__user: ctx.userID,
|
|
297
|
+
__a: '1',
|
|
298
|
+
fb_dtsg: ctx.fb_dtsg,
|
|
299
|
+
jazoest: ctx.jazoest,
|
|
300
|
+
lsd: ctx.lsd,
|
|
301
|
+
fb_api_caller_class: 'RelayModern',
|
|
302
|
+
fb_api_req_friendly_name: 'FriendingCometFriendRequestCancelMutation',
|
|
303
|
+
variables: JSON.stringify(variables),
|
|
304
|
+
doc_id: '24453541284254355',
|
|
305
|
+
};
|
|
306
|
+
const res = await defaultFuncs.post('https://www.facebook.com/api/graphql/', ctx.jar, form, {});
|
|
307
|
+
if (res.data.errors)
|
|
308
|
+
throw new Error(JSON.stringify(res.data.errors));
|
|
309
|
+
return res.data.data;
|
|
310
|
+
}
|
|
311
|
+
catch (err) {
|
|
312
|
+
throw err;
|
|
313
|
+
}
|
|
314
|
+
},
|
|
315
|
+
/**
|
|
316
|
+
* Unfriends a user (hủy kết bạn).
|
|
317
|
+
* @async
|
|
318
|
+
* @param {string} userID The ID of the user to unfriend.
|
|
319
|
+
* @returns {Promise<Object>} A promise that resolves to the API response data upon successful unfriending.
|
|
320
|
+
* @throws {Error} If the userID is missing or the API request fails.
|
|
321
|
+
*/
|
|
322
|
+
unfriend: async function (userID) {
|
|
323
|
+
try {
|
|
324
|
+
if (!userID)
|
|
325
|
+
throw new Error('userID is required.');
|
|
326
|
+
const variables = {
|
|
327
|
+
input: {
|
|
328
|
+
source: 'bd_profile_button',
|
|
329
|
+
unfriended_user_id: userID,
|
|
330
|
+
actor_id: ctx.userID,
|
|
331
|
+
client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
|
|
332
|
+
},
|
|
333
|
+
scale: 1,
|
|
334
|
+
};
|
|
335
|
+
const form = {
|
|
336
|
+
av: ctx.userID,
|
|
337
|
+
__user: ctx.userID,
|
|
338
|
+
__a: '1',
|
|
339
|
+
fb_dtsg: ctx.fb_dtsg,
|
|
340
|
+
jazoest: ctx.jazoest,
|
|
341
|
+
lsd: ctx.lsd,
|
|
342
|
+
fb_api_caller_class: 'RelayModern',
|
|
343
|
+
fb_api_req_friendly_name: 'FriendingCometUnfriendMutation',
|
|
344
|
+
variables: JSON.stringify(variables),
|
|
345
|
+
doc_id: '24028849793460009',
|
|
346
|
+
};
|
|
347
|
+
const res = await defaultFuncs.post('https://www.facebook.com/api/graphql/', ctx.jar, form, {});
|
|
348
|
+
if (res.data.errors)
|
|
349
|
+
throw new Error(JSON.stringify(res.data.errors));
|
|
350
|
+
return res.data.data;
|
|
351
|
+
}
|
|
352
|
+
catch (err) {
|
|
353
|
+
throw err;
|
|
354
|
+
}
|
|
355
|
+
},
|
|
272
356
|
suggest: {
|
|
273
357
|
/**
|
|
274
358
|
* Fetches a list of suggested friends (People You May Know).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"friend.js","sourceRoot":"","sources":["../../../../src/deltas/apis/posting/friend.ts"],"names":[],"mappings":";;AAUA,4BAkoBC;AA5oBD,wCAAyC;AAEzC;;;;;;;GAOG;AACH,mBAAyB,YAAiB,EAAE,GAAQ,EAAE,GAAQ;IAC5D;;;;;;OAMG;IACH,SAAS,aAAa,CAAC,IAAI,EAAE,IAAI;QAC/B,MAAM,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;QAClC,IAAI,KAAK,CAAC;QACV,IAAI,IAAI,KAAK,UAAU,IAAI,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;YAC1D,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC;QACvC,CAAC;aAAM,IAAI,IAAI,KAAK,aAAa,IAAI,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC;YACxE,KAAK,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC;QAC3C,CAAC;aAAM,IACL,IAAI,KAAK,MAAM;YACf,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,UAAU;gBACrE,EAAE,SAAS,EAAE,KAAK,EACpB,CAAC;YACD,KAAK;gBACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU;qBAC9D,SAAS,CAAC,KAAK,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,OAAO;gBACL,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;gBAChC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI;gBACnC,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG;gBAC5D,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI;gBACpE,GAAG,EAAE,IAAI,CAAC,GAAG;aACd,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,YAAY,GAAG;QACnB;;;;;WAKG;QAEH;;;;;WAKG;QACH,QAAQ,EAAE,KAAK;YACb,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,2CAA2C,CAAC;gBACxD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,GAAG,CAC7B,GAAG,EACH,GAAG,CAAC,GAAG,EACP,EAAE,EACF,GAAG,CAAC,aAAa,EACjB,GAAG,CACJ,CAAC;gBACF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACrC,OAAO,6BAA6B,CAAC,IAAI,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,KAAK,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;gBACpC,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED;;;;;;WAMG;QACH,MAAM,EAAE,KAAK,WAAW,UAAU;YAChC,IAAI,CAAC;gBACH,IAAI,CAAC,UAAU;oBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;gBACnE,IAAI,YAAY,GAAG,UAAU,CAAC;gBAC9B,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;oBACtB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,CAAC;oBAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAClC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAC1D,CAAC;oBACF,IAAI,CAAC,KAAK;wBACR,MAAM,IAAI,KAAK,CACb,+CAA+C,UAAU,IAAI,CAC9D,CAAC;oBACJ,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC9B,CAAC;gBACD,MAAM,SAAS,GAAG;oBAChB,KAAK,EAAE;wBACL,oBAAoB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;wBAC3C,6BAA6B,EAAE,oBAAoB;wBACnD,mBAAmB,EAAE,YAAY;wBACjC,iBAAiB,EAAE,uBAAuB;wBAC1C,QAAQ,EAAE,KAAK;wBACf,QAAQ,EAAE,GAAG,CAAC,MAAM;wBACpB,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;qBAClE;oBACD,KAAK,EAAE,CAAC;oBACR,WAAW,EAAE,CAAC;oBACd,iBAAiB,EAAE,IAAI;iBACxB,CAAC;gBACF,MAAM,IAAI,GAAG;oBACX,EAAE,EAAE,GAAG,CAAC,MAAM;oBACd,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,GAAG,EAAE,GAAG;oBACR,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,GAAG,EAAE,GAAG,CAAC,GAAG;oBACZ,mBAAmB,EAAE,aAAa;oBAClC,wBAAwB,EACtB,4CAA4C;oBAC9C,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;oBACpC,MAAM,EAAE,mBAAmB;iBAC5B,CAAC;gBACF,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,CACjC,uCAAuC,EACvC,GAAG,CAAC,GAAG,EACP,IAAI,EACJ,EAAE,CACH,CAAC;gBACF,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBACtE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACvB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACrC,MAAM,IAAI,KAAK,CACb,+GAA+G,CAChH,CAAC;gBACJ,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED;;;;;;WAMG;QACH,MAAM,EAAE,KAAK,WAAW,UAAU;YAChC,IAAI,CAAC;gBACH,IAAI,CAAC,UAAU;oBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;gBACnE,IAAI,YAAY,GAAG,UAAU,CAAC;gBAC9B,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;oBACtB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,CAAC;oBAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAClC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAC1D,CAAC;oBACF,IAAI,CAAC,KAAK;wBACR,MAAM,IAAI,KAAK,CACb,+CAA+C,UAAU,IAAI,CAC9D,CAAC;oBACJ,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC9B,CAAC;gBACD,MAAM,SAAS,GAAG;oBAChB,KAAK,EAAE;wBACL,oBAAoB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;wBAC3C,6BAA6B,EAAE,oBAAoB;wBACnD,mBAAmB,EAAE,YAAY;wBACjC,iBAAiB,EAAE,uBAAuB;wBAC1C,QAAQ,EAAE,GAAG,CAAC,MAAM;wBACpB,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;qBAClE;oBACD,KAAK,EAAE,CAAC;oBACR,WAAW,EAAE,CAAC;iBACf,CAAC;gBACF,MAAM,IAAI,GAAG;oBACX,EAAE,EAAE,GAAG,CAAC,MAAM;oBACd,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,GAAG,EAAE,GAAG;oBACR,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,GAAG,EAAE,GAAG,CAAC,GAAG;oBACZ,mBAAmB,EAAE,aAAa;oBAClC,wBAAwB,EAAE,2CAA2C;oBACrE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;oBACpC,MAAM,EAAE,mBAAmB;iBAC5B,CAAC;gBACF,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,CACjC,uCAAuC,EACvC,GAAG,CAAC,GAAG,EACP,IAAI,EACJ,EAAE,CACH,CAAC;gBACF,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBACtE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACvB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED;;;;;;WAMG;QACH,IAAI,EAAE,KAAK,WAAW,MAAM,GAAG,GAAG,CAAC,MAAM;YACvC,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAC9B,eAAe,MAAM,aAAa,CACnC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACrB,MAAM,SAAS,GAAG;oBAChB,eAAe,EAAE,IAAI;oBACrB,KAAK,EAAE,CAAC;oBACR,YAAY,EAAE,YAAY;oBAC1B,eAAe,EAAE,KAAK;oBACtB,MAAM,EAAE,MAAM;iBACf,CAAC;gBACF,MAAM,IAAI,GAAG;oBACX,EAAE,EAAE,GAAG,CAAC,MAAM;oBACd,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,GAAG,EAAE,GAAG;oBACR,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,GAAG,EAAE,GAAG,CAAC,GAAG;oBACZ,mBAAmB,EAAE,aAAa;oBAClC,wBAAwB,EAAE,gCAAgC;oBAC1D,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;oBACpC,MAAM,EAAE,mBAAmB;iBAC5B,CAAC;gBACF,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,CACjC,uCAAuC,EACvC,GAAG,CAAC,GAAG,EACP,IAAI,EACJ,EAAE,CACH,CAAC;gBACF,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBACtE,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED;;;WAGG;QACH,iBAAiB,EAAE,iBAAiB;QAEpC;;;;;;WAMG;QACH,GAAG,EAAE,KAAK,WAAW,MAAM;YACzB,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACpD,MAAM,SAAS,GAAG;oBAChB,KAAK,EAAE;wBACL,oBAAoB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;wBAC3C,6BAA6B,EAAE,oBAAoB;wBACnD,oBAAoB,EAAE,CAAC,MAAM,CAAC;wBAC9B,iBAAiB,EAAE,gBAAgB;wBACnC,gBAAgB,EAAE,EAAE;wBACpB,QAAQ,EAAE,GAAG,CAAC,MAAM;wBACpB,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;qBAClE;oBACD,KAAK,EAAE,CAAC;iBACT,CAAC;gBACF,MAAM,IAAI,GAAG;oBACX,EAAE,EAAE,GAAG,CAAC,MAAM;oBACd,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,GAAG,EAAE,GAAG;oBACR,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,GAAG,EAAE,GAAG,CAAC,GAAG;oBACZ,mBAAmB,EAAE,aAAa;oBAClC,wBAAwB,EAAE,yCAAyC;oBACnE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;oBACpC,MAAM,EAAE,mBAAmB;iBAC5B,CAAC;gBACF,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,CACjC,uCAAuC,EACvC,GAAG,CAAC,GAAG,EACP,IAAI,EACJ,EAAE,CACH,CAAC;gBACF,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBACtE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACvB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED,OAAO,EAAE;YACP;;;;;;eAMG;YACH,IAAI,EAAE,KAAK,WAAW,KAAK,GAAG,EAAE;gBAC9B,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG;wBACX,EAAE,EAAE,GAAG,CAAC,MAAM;wBACd,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,GAAG,EAAE,GAAG;wBACR,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,GAAG,EAAE,GAAG,CAAC,GAAG;wBACZ,mBAAmB,EAAE,aAAa;wBAClC,wBAAwB,EAAE,wCAAwC;wBAClE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;wBACnE,MAAM,EAAE,kBAAkB;qBAC3B,CAAC;oBACF,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,CACjC,uCAAuC,EACvC,GAAG,CAAC,GAAG,EACP,IAAI,EACJ,EAAE,CACH,CAAC;oBACF,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM;wBAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;oBACtE,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;gBAChD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC;YACD;;;;;;eAMG;YACH,OAAO,EAAE,KAAK,WAAW,MAAM;gBAC7B,IAAI,CAAC;oBACH,IAAI,CAAC,MAAM;wBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;oBACpD,MAAM,SAAS,GAAG;wBAChB,KAAK,EAAE;4BACL,oBAAoB,EAAE,CAAC,MAAM,CAAC;4BAC9B,iBAAiB,EAAE,mBAAmB;4BACtC,QAAQ,EAAE,GAAG,CAAC,MAAM;4BACpB,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;yBAClE;wBACD,KAAK,EAAE,CAAC;qBACT,CAAC;oBACF,MAAM,IAAI,GAAG;wBACX,EAAE,EAAE,GAAG,CAAC,MAAM;wBACd,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,GAAG,EAAE,GAAG;wBACR,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,GAAG,EAAE,GAAG,CAAC,GAAG;wBACZ,mBAAmB,EAAE,aAAa;wBAClC,wBAAwB,EAAE,yCAAyC;wBACnE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;wBACpC,MAAM,EAAE,mBAAmB;qBAC5B,CAAC;oBACF,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,CACjC,uCAAuC,EACvC,GAAG,CAAC,GAAG,EACP,IAAI,EACJ,EAAE,CACH,CAAC;oBACF,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM;wBAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;oBACtE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;gBACvB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC;SACF;KACF,CAAC;IAEF;;;;;;OAMG;IACH,KAAK,UAAU,iBAAiB,CAAC,QAAS;QACxC,IAAI,WAAW,GAAa,cAAc,CAAC,CAAC;QAC5C,IAAI,UAAU,GAAa,cAAc,CAAC,CAAC;QAE3C,MAAM,aAAa,GAAG,IAAI,OAAO,CAAM,UAAU,OAAO,EAAE,MAAM;YAC9D,WAAW,GAAG,OAAO,CAAC;YACtB,UAAU,GAAG,MAAM,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,QAAQ;YACN,QAAQ;gBACR,UAAU,GAAG,EAAE,IAAI;oBACjB,IAAI,GAAG;wBAAE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;oBAChC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC,CAAC;QAEJ,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,uCAAuC,CAAC;YACpD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;YAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAErC,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAC7C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;YACtC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACH,SAAS,sBAAsB,CAAC,WAAW;QACzC,MAAM,OAAO,GAAU,EAAE,CAAC;QAE1B,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,CACrC,wFAAwF,CACzF,CAAC;YAEF,IAAI,CAAC,aAAa;gBAAE,OAAO,OAAO,CAAC;YAEnC,KAAK,MAAM,WAAW,IAAI,aAAa,EAAE,CAAC;gBACxC,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;oBACrE,IAAI,CAAC,SAAS;wBAAE,SAAS;oBAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;oBAE1C,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;wBAAE,SAAS;oBAEpE,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;wBACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;4BAAE,SAAS;wBAElC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,mBAAmB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;4BAC1D,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;4BACvB,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gCAAE,SAAS;4BAElD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gCAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;oCAAE,SAAS;gCAEnD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oCAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;wCAAE,SAAS;oCAEtC,IACE,OAAO,CAAC,CAAC,CAAC,KAAK,4BAA4B;wCAC3C,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,EACrB,CAAC;wCACD,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;wCAC9B,IACE,CAAC,UAAU;4CACX,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;4CAC1B,UAAU,CAAC,MAAM,GAAG,CAAC;4CAErB,SAAS;wCAEX,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;wCAC/B,IACE,OAAO,QAAQ,KAAK,QAAQ;4CAC5B,CAAC,QAAQ,CAAC,QAAQ,CAAC,mCAAmC,CAAC;4CAEvD,SAAS;wCAEX,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;wCAC/B,IACE,CAAC,QAAQ;4CACT,CAAC,QAAQ,CAAC,MAAM;4CAChB,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM;4CAEvB,SAAS;wCAEX,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;wCACpD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW;4CAAE,SAAS;wCAE7C,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;wCACtC,MAAM,WAAW,GACf,MAAM,CAAC,gBAAgB,EAAE,YAAY;4CACrC,MAAM,CAAC,gBAAgB,EAAE,KAAK;4CAC9B,CAAC,CAAC;wCAEJ,IAAI,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;4CACxD,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;gDACpC,IAAI,CAAC,IAAI,CAAC,IAAI;oDAAE,SAAS;gDAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gDACvB,OAAO,CAAC,IAAI,CAAC;oDACX,MAAM,EAAE,IAAI,CAAC,EAAE;oDACf,IAAI,EAAE,IAAI,CAAC,IAAI;oDACf,SAAS,EAAE,IAAI,CAAC,UAAU;oDAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;oDACnB,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG;oDACzC,UAAU,EAAE,IAAI,CAAC,GAAG;oDACpB,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;oDACxC,eAAe,EAAE,IAAI,CAAC,gBAAgB;oDACtC,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI;oDACxC,aAAa,EACX,IAAI,CAAC,iCAAiC,IAAI,EAAE;iDAC/C,CAAC,CAAC;4CACL,CAAC;wCACH,CAAC;wCAED,mCAAmC;wCAClC,OAAe,CAAC,UAAU,GAAG,WAAW,CAAC;wCACzC,OAAe,CAAC,QAAQ,GAAG,UAAU,CAAC,SAAS,IAAI,IAAI,CAAC;oCAC3D,CAAC;gCACH,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,KAAK,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,SAAS,6BAA6B,CAAC,WAAW;QAChD,MAAM,QAAQ,GAAU,EAAE,CAAC;QAE3B,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,CACrC,wFAAwF,CACzF,CAAC;YAEF,IAAI,CAAC,aAAa;gBAAE,OAAO,QAAQ,CAAC;YAEpC,KAAK,MAAM,WAAW,IAAI,aAAa,EAAE,CAAC;gBACxC,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;oBACrE,IAAI,CAAC,SAAS;wBAAE,SAAS;oBAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;oBAE1C,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;wBAAE,SAAS;oBAEpE,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;wBACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;4BAAE,SAAS;wBAElC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,mBAAmB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;4BAC1D,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;4BACvB,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gCAAE,SAAS;4BAElD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gCAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;oCAAE,SAAS;gCAEnD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oCAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;wCAAE,SAAS;oCAEtC,IACE,OAAO,CAAC,CAAC,CAAC,KAAK,4BAA4B;wCAC3C,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,EACrB,CAAC;wCACD,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;wCAC9B,IACE,CAAC,UAAU;4CACX,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;4CAC1B,UAAU,CAAC,MAAM,GAAG,CAAC;4CAErB,SAAS;wCAEX,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;wCAC/B,IACE,OAAO,QAAQ,KAAK,QAAQ;4CAC5B,CAAC,QAAQ,CAAC,QAAQ,CAChB,uCAAuC,CACxC;4CAED,SAAS;wCAEX,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;wCAC/B,IACE,CAAC,QAAQ;4CACT,CAAC,QAAQ,CAAC,MAAM;4CAChB,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM;4CAEvB,SAAS;wCAEX,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;wCACpD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,uBAAuB;4CAAE,SAAS;wCAEzD,MAAM,sBAAsB,GAC1B,MAAM,CAAC,uBAAuB,CAAC;wCACjC,MAAM,YAAY,GAAG,sBAAsB,CAAC,KAAK,IAAI,CAAC,CAAC;wCAEvD,IACE,sBAAsB,CAAC,KAAK;4CAC5B,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAC3C,CAAC;4CACD,KAAK,MAAM,IAAI,IAAI,sBAAsB,CAAC,KAAK,EAAE,CAAC;gDAChD,IAAI,CAAC,IAAI,CAAC,IAAI;oDAAE,SAAS;gDAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gDACvB,QAAQ,CAAC,IAAI,CAAC;oDACZ,MAAM,EAAE,IAAI,CAAC,EAAE;oDACf,IAAI,EAAE,IAAI,CAAC,IAAI;oDACf,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG;oDACzC,UAAU,EAAE,IAAI,CAAC,GAAG;oDACpB,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;oDACxC,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI;oDACxC,aAAa,EACX,IAAI,CAAC,iCAAiC,IAAI,EAAE;oDAC9C,IAAI,EAAE,IAAI,CAAC,IAAI;oDACf,MAAM,EAAE,IAAI,CAAC,OAAO;iDACrB,CAAC,CAAC;4CACL,CAAC;wCACH,CAAC;wCAED,mCAAmC;wCAClC,QAAgB,CAAC,UAAU,GAAG,YAAY,CAAC;wCAC3C,QAAgB,CAAC,QAAQ;4CACxB,sBAAsB,CAAC,SAAS,IAAI,IAAI,CAAC;oCAC7C,CAAC;gCACH,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,KAAK,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
1
|
+
{"version":3,"file":"friend.js","sourceRoot":"","sources":["../../../../src/deltas/apis/posting/friend.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = default_1;
|
|
4
|
+
/**
|
|
5
|
+
* @ChoruOfficial
|
|
6
|
+
* @description A module for updating the Facebook profile bio (tiểu sử).
|
|
7
|
+
* Calls ProfileCometBioFieldSaveMutation via /api/graphql/.
|
|
8
|
+
* @param {Object} defaultFuncs The default functions provided by the API wrapper.
|
|
9
|
+
* @param {Object} api The full API object.
|
|
10
|
+
* @param {Object} ctx The context object containing the user's session state.
|
|
11
|
+
* @returns {Function} An async function that updates the account's bio.
|
|
12
|
+
*/
|
|
13
|
+
function default_1(defaultFuncs, api, ctx) {
|
|
14
|
+
/**
|
|
15
|
+
* Updates the profile bio (tiểu sử) of the logged-in user.
|
|
16
|
+
* @async
|
|
17
|
+
* @param {string} bio The new bio text to set. Pass an empty string to clear the bio.
|
|
18
|
+
* @returns {Promise<Object>} A promise that resolves to the API response data on success.
|
|
19
|
+
* @throws {Error} If the API request fails.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* await api.changeBio('day la tieu su doi toi');
|
|
23
|
+
* await api.changeBio(''); // clear bio
|
|
24
|
+
*/
|
|
25
|
+
return async function changeBio(bio) {
|
|
26
|
+
if (bio === undefined || bio === null) {
|
|
27
|
+
throw new Error('bio is required. Pass an empty string to clear it.');
|
|
28
|
+
}
|
|
29
|
+
// sectionToken = base64("app_section:<userID>:2327158227")
|
|
30
|
+
const sectionToken = Buffer.from(`app_section:${ctx.userID}:2327158227`).toString('base64');
|
|
31
|
+
const variables = {
|
|
32
|
+
collectionToken: 'UNKNOWN',
|
|
33
|
+
input: {
|
|
34
|
+
bio: bio,
|
|
35
|
+
profile_field_section_type: 'DIRECTORY_BIO',
|
|
36
|
+
actor_id: ctx.userID,
|
|
37
|
+
client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
|
|
38
|
+
},
|
|
39
|
+
scale: 1,
|
|
40
|
+
sectionToken: sectionToken,
|
|
41
|
+
};
|
|
42
|
+
const form = {
|
|
43
|
+
av: ctx.userID,
|
|
44
|
+
__user: ctx.userID,
|
|
45
|
+
__a: '1',
|
|
46
|
+
fb_dtsg: ctx.fb_dtsg,
|
|
47
|
+
jazoest: ctx.jazoest,
|
|
48
|
+
lsd: ctx.lsd,
|
|
49
|
+
fb_api_caller_class: 'RelayModern',
|
|
50
|
+
fb_api_req_friendly_name: 'ProfileCometBioFieldSaveMutation',
|
|
51
|
+
variables: JSON.stringify(variables),
|
|
52
|
+
server_timestamps: 'true',
|
|
53
|
+
doc_id: '26787878704133086',
|
|
54
|
+
};
|
|
55
|
+
const res = await defaultFuncs.post('https://www.facebook.com/api/graphql/', ctx.jar, form, {});
|
|
56
|
+
if (res.data.errors)
|
|
57
|
+
throw new Error(JSON.stringify(res.data.errors));
|
|
58
|
+
return res.data.data;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=changeBio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changeBio.js","sourceRoot":"","sources":["../../../../src/deltas/apis/users/changeBio.ts"],"names":[],"mappings":";;AASA,4BA0DC;AAnED;;;;;;;;GAQG;AACH,mBAAyB,YAAiB,EAAE,GAAQ,EAAE,GAAQ;IAC5D;;;;;;;;;;OAUG;IACH,OAAO,KAAK,UAAU,SAAS,CAAC,GAAW;QACzC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,2DAA2D;QAC3D,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAC9B,eAAe,GAAG,CAAC,MAAM,aAAa,CACvC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAErB,MAAM,SAAS,GAAG;YAChB,eAAe,EAAE,SAAS;YAC1B,KAAK,EAAE;gBACL,GAAG,EAAE,GAAG;gBACR,0BAA0B,EAAE,eAAe;gBAC3C,QAAQ,EAAE,GAAG,CAAC,MAAM;gBACpB,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;aAClE;YACD,KAAK,EAAE,CAAC;YACR,YAAY,EAAE,YAAY;SAC3B,CAAC;QAEF,MAAM,IAAI,GAAG;YACX,EAAE,EAAE,GAAG,CAAC,MAAM;YACd,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,EAAE,GAAG;YACR,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,mBAAmB,EAAE,aAAa;YAClC,wBAAwB,EAAE,kCAAkC;YAC5D,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YACpC,iBAAiB,EAAE,MAAM;YACzB,MAAM,EAAE,mBAAmB;SAC5B,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,CACjC,uCAAuC,EACvC,GAAG,CAAC,GAAG,EACP,IAAI,EACJ,EAAE,CACH,CAAC;QAEF,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACtE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.default = default_1;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const utils = require("../../../utils");
|
|
39
|
+
/**
|
|
40
|
+
* @description A module for uploading a new profile picture (avatar) to Facebook.
|
|
41
|
+
* Two-step process:
|
|
42
|
+
* 1. Upload: sends the image file via multipart/form-data to /profile/picture/upload/
|
|
43
|
+
* 2. Set: calls ProfileCometProfilePictureSetMutation to apply the photo as avatar with optional caption
|
|
44
|
+
* @param {Object} defaultFuncs The default functions provided by the API wrapper.
|
|
45
|
+
* @param {Object} api The full API object.
|
|
46
|
+
* @param {Object} ctx The context object containing the user's session state.
|
|
47
|
+
* @returns {Function} An async function that uploads an avatar image.
|
|
48
|
+
*/
|
|
49
|
+
function default_1(defaultFuncs, api, ctx) {
|
|
50
|
+
/**
|
|
51
|
+
* Step 2 — Apply the uploaded photo as avatar via ProfileCometProfilePictureSetMutation.
|
|
52
|
+
* @private
|
|
53
|
+
* @param {string} photoID The ID of the uploaded photo.
|
|
54
|
+
* @param {string} profileID The profile ID.
|
|
55
|
+
* @param {string} caption Optional caption for the avatar.
|
|
56
|
+
*/
|
|
57
|
+
async function setProfilePicture(photoID, profileID, caption = '') {
|
|
58
|
+
const variables = {
|
|
59
|
+
input: {
|
|
60
|
+
attribution_id_v2: `ProfileCometTimelineListViewRoot.react,comet.profile.timeline.list,via_cold_start,${Date.now()},473818,190055527696468,,`,
|
|
61
|
+
caption: caption,
|
|
62
|
+
existing_photo_id: photoID,
|
|
63
|
+
expiration_time: null,
|
|
64
|
+
profile_id: profileID,
|
|
65
|
+
profile_pic_method: 'EXISTING',
|
|
66
|
+
profile_pic_source: 'TIMELINE',
|
|
67
|
+
scaled_crop_rect: { height: 0.56328, width: 1, x: 0, y: 0.21836 },
|
|
68
|
+
skip_cropping: true,
|
|
69
|
+
actor_id: ctx.userID,
|
|
70
|
+
client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
|
|
71
|
+
},
|
|
72
|
+
isPage: false,
|
|
73
|
+
isProfile: true,
|
|
74
|
+
sectionToken: 'UNKNOWN',
|
|
75
|
+
collectionToken: 'UNKNOWN',
|
|
76
|
+
scale: 1,
|
|
77
|
+
'__relay_internal__pv__ProfileGeminiIsCoinFlipEnabledrelayprovider': false,
|
|
78
|
+
};
|
|
79
|
+
const form = {
|
|
80
|
+
av: ctx.userID,
|
|
81
|
+
__user: ctx.userID,
|
|
82
|
+
__a: '1',
|
|
83
|
+
fb_dtsg: ctx.fb_dtsg,
|
|
84
|
+
jazoest: ctx.jazoest,
|
|
85
|
+
lsd: ctx.lsd,
|
|
86
|
+
fb_api_caller_class: 'RelayModern',
|
|
87
|
+
fb_api_req_friendly_name: 'ProfileCometProfilePictureSetMutation',
|
|
88
|
+
variables: JSON.stringify(variables),
|
|
89
|
+
server_timestamps: 'true',
|
|
90
|
+
doc_id: '26101621736123633',
|
|
91
|
+
};
|
|
92
|
+
const res = await defaultFuncs.post('https://www.facebook.com/api/graphql/', ctx.jar, form, {});
|
|
93
|
+
if (res.data.errors)
|
|
94
|
+
throw new Error(JSON.stringify(res.data.errors));
|
|
95
|
+
return res.data;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Uploads a new profile picture (avatar) for the logged-in user, then sets it as avatar with optional caption.
|
|
99
|
+
* @async
|
|
100
|
+
* @param {string} imagePath The local file path to the image to upload.
|
|
101
|
+
* @param {string} [caption=''] Optional caption for the profile picture post.
|
|
102
|
+
* @param {string} [profileID=ctx.userID] The profile ID to upload the avatar for. Defaults to the logged-in user.
|
|
103
|
+
* @param {Function} [callback] Optional callback function.
|
|
104
|
+
* @returns {Promise<Object>} A promise that resolves with { upload, set } data on success.
|
|
105
|
+
* @throws {Error} If the imagePath is missing, the file does not exist, or any step fails.
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* await api.uploadAvatar('/path/to/photo.jpg');
|
|
109
|
+
* await api.uploadAvatar('/path/to/photo.jpg', 'My new avatar!');
|
|
110
|
+
* await api.uploadAvatar('/path/to/photo.jpg', 'Caption', '61588408996667');
|
|
111
|
+
*/
|
|
112
|
+
return async function uploadAvatar(imagePath, caption = '', profileID = ctx.userID, callback) {
|
|
113
|
+
let resolveFunc = function () { };
|
|
114
|
+
let rejectFunc = function () { };
|
|
115
|
+
const returnPromise = new Promise(function (resolve, reject) {
|
|
116
|
+
resolveFunc = resolve;
|
|
117
|
+
rejectFunc = reject;
|
|
118
|
+
});
|
|
119
|
+
callback =
|
|
120
|
+
callback ||
|
|
121
|
+
function (err, data) {
|
|
122
|
+
if (err)
|
|
123
|
+
return rejectFunc(err);
|
|
124
|
+
resolveFunc(data);
|
|
125
|
+
};
|
|
126
|
+
try {
|
|
127
|
+
if (!imagePath)
|
|
128
|
+
throw new Error('imagePath is required.');
|
|
129
|
+
if (typeof imagePath !== 'string')
|
|
130
|
+
throw new Error('imagePath must be a string.');
|
|
131
|
+
if (!fs.existsSync(imagePath))
|
|
132
|
+
throw new Error(`File not found: ${imagePath}`);
|
|
133
|
+
// Step 1: Upload the photo
|
|
134
|
+
const photoStream = fs.createReadStream(imagePath);
|
|
135
|
+
const url = new URL('https://www.facebook.com/profile/picture/upload/');
|
|
136
|
+
url.searchParams.append('photo_source', '57');
|
|
137
|
+
url.searchParams.append('profile_id', profileID);
|
|
138
|
+
url.searchParams.append('av', ctx.userID);
|
|
139
|
+
url.searchParams.append('__aaid', '0');
|
|
140
|
+
url.searchParams.append('__user', ctx.userID);
|
|
141
|
+
url.searchParams.append('__a', '1');
|
|
142
|
+
url.searchParams.append('fb_dtsg', ctx.fb_dtsg);
|
|
143
|
+
url.searchParams.append('jazoest', ctx.jazoest);
|
|
144
|
+
url.searchParams.append('lsd', ctx.lsd);
|
|
145
|
+
const uploadResponse = await utils.postFormData(url.toString(), ctx.jar, { file: photoStream }, ctx.globalOptions, ctx);
|
|
146
|
+
const uploadResult = JSON.parse(uploadResponse.body.toString().replace(/^for \(;;\);/, ''));
|
|
147
|
+
if (uploadResult.error || uploadResult.errors) {
|
|
148
|
+
throw new Error(JSON.stringify(uploadResult.error || uploadResult.errors));
|
|
149
|
+
}
|
|
150
|
+
const photoID = uploadResult.payload?.fbid ||
|
|
151
|
+
uploadResult.payload?.photoID ||
|
|
152
|
+
uploadResult.payload?.photo_id ||
|
|
153
|
+
null;
|
|
154
|
+
if (!photoID) {
|
|
155
|
+
throw new Error('Upload succeeded but could not extract photo ID from response.');
|
|
156
|
+
}
|
|
157
|
+
// Step 2: Set as profile picture with caption
|
|
158
|
+
const setResult = await setProfilePicture(photoID, profileID, caption);
|
|
159
|
+
const result = {
|
|
160
|
+
success: true,
|
|
161
|
+
photoID: photoID,
|
|
162
|
+
upload: uploadResult,
|
|
163
|
+
set: setResult,
|
|
164
|
+
};
|
|
165
|
+
callback(null, result);
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
utils.error('uploadAvatar', err);
|
|
169
|
+
callback(err);
|
|
170
|
+
}
|
|
171
|
+
return returnPromise;
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=uploadAvatar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploadAvatar.js","sourceRoot":"","sources":["../../../../src/deltas/apis/users/uploadAvatar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.default = default_1;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const utils = require("../../../utils");
|
|
39
|
+
/**
|
|
40
|
+
* @ChoruOfficial
|
|
41
|
+
* @description A module for uploading a new cover photo (ảnh bìa) to Facebook.
|
|
42
|
+
* Two-step process:
|
|
43
|
+
* 1. Upload: sends the image file via multipart/form-data to /profile/cover/comet_upload/
|
|
44
|
+
* 2. Confirm: calls ProfileCometCoverPhotoUpdateMutation to apply the photo as cover
|
|
45
|
+
* @param {Object} defaultFuncs The default functions provided by the API wrapper.
|
|
46
|
+
* @param {Object} api The full API object.
|
|
47
|
+
* @param {Object} ctx The context object containing the user's session state.
|
|
48
|
+
* @returns {Function} An async function that uploads a cover photo.
|
|
49
|
+
*/
|
|
50
|
+
function default_1(defaultFuncs, api, ctx) {
|
|
51
|
+
/**
|
|
52
|
+
* Step 2 — Confirm the uploaded photo as cover via ProfileCometCoverPhotoUpdateMutation.
|
|
53
|
+
* @private
|
|
54
|
+
* @param {string} photoID The ID of the uploaded photo.
|
|
55
|
+
* @param {string} profileID The profile ID.
|
|
56
|
+
* @param {{ x: number, y: number }} [focus] Optional focus point. Defaults to center {x:0.5, y:0.5}.
|
|
57
|
+
*/
|
|
58
|
+
async function setCoverPhoto(photoID, profileID, focus = { x: 0.5, y: 0.5 }) {
|
|
59
|
+
const variables = {
|
|
60
|
+
input: {
|
|
61
|
+
attribution_id_v2: `ProfileCometAboutTabRoot.react,comet.profile.collection.about,via_cold_start,${Date.now()},670164,,,`,
|
|
62
|
+
cover_photo_id: photoID,
|
|
63
|
+
focus: focus,
|
|
64
|
+
target_user_id: profileID,
|
|
65
|
+
actor_id: ctx.userID,
|
|
66
|
+
client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
|
|
67
|
+
},
|
|
68
|
+
scale: 1,
|
|
69
|
+
contextualProfileContext: null,
|
|
70
|
+
};
|
|
71
|
+
const form = {
|
|
72
|
+
av: ctx.userID,
|
|
73
|
+
__user: ctx.userID,
|
|
74
|
+
__a: '1',
|
|
75
|
+
fb_dtsg: ctx.fb_dtsg,
|
|
76
|
+
jazoest: ctx.jazoest,
|
|
77
|
+
lsd: ctx.lsd,
|
|
78
|
+
fb_api_caller_class: 'RelayModern',
|
|
79
|
+
fb_api_req_friendly_name: 'ProfileCometCoverPhotoUpdateMutation',
|
|
80
|
+
variables: JSON.stringify(variables),
|
|
81
|
+
server_timestamps: 'true',
|
|
82
|
+
doc_id: '31388044007461211',
|
|
83
|
+
};
|
|
84
|
+
const res = await defaultFuncs.post('https://www.facebook.com/api/graphql/', ctx.jar, form, {});
|
|
85
|
+
if (res.data.errors)
|
|
86
|
+
throw new Error(JSON.stringify(res.data.errors));
|
|
87
|
+
return res.data;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Uploads a new cover photo (ảnh bìa) for the logged-in user, then confirms it as the cover.
|
|
91
|
+
* @async
|
|
92
|
+
* @param {string} imagePath The local file path to the image to upload.
|
|
93
|
+
* @param {string} [profileID=ctx.userID] The profile ID. Defaults to the logged-in user.
|
|
94
|
+
* @param {{ x: number, y: number }} [focus] Optional focus point for cropping. Defaults to {x:0.5, y:0.5}.
|
|
95
|
+
* @param {Function} [callback] Optional callback function.
|
|
96
|
+
* @returns {Promise<Object>} A promise that resolves with { upload, set } data on success.
|
|
97
|
+
* @throws {Error} If the imagePath is missing, the file does not exist, or any step fails.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* await api.uploadCover('/path/to/cover.jpg');
|
|
101
|
+
* await api.uploadCover('/path/to/cover.jpg', '61588408996667');
|
|
102
|
+
* await api.uploadCover('/path/to/cover.jpg', ctx.userID, { x: 0.5, y: 0.3 });
|
|
103
|
+
*/
|
|
104
|
+
return async function uploadCover(imagePath, profileID = ctx.userID, focus = { x: 0.5, y: 0.5 }, callback) {
|
|
105
|
+
let resolveFunc = function () { };
|
|
106
|
+
let rejectFunc = function () { };
|
|
107
|
+
const returnPromise = new Promise(function (resolve, reject) {
|
|
108
|
+
resolveFunc = resolve;
|
|
109
|
+
rejectFunc = reject;
|
|
110
|
+
});
|
|
111
|
+
callback =
|
|
112
|
+
callback ||
|
|
113
|
+
function (err, data) {
|
|
114
|
+
if (err)
|
|
115
|
+
return rejectFunc(err);
|
|
116
|
+
resolveFunc(data);
|
|
117
|
+
};
|
|
118
|
+
try {
|
|
119
|
+
if (!imagePath)
|
|
120
|
+
throw new Error('imagePath is required.');
|
|
121
|
+
if (typeof imagePath !== 'string')
|
|
122
|
+
throw new Error('imagePath must be a string.');
|
|
123
|
+
if (!fs.existsSync(imagePath))
|
|
124
|
+
throw new Error(`File not found: ${imagePath}`);
|
|
125
|
+
// Step 1: Upload the photo
|
|
126
|
+
const photoStream = fs.createReadStream(imagePath);
|
|
127
|
+
const url = new URL('https://www.facebook.com/profile/cover/comet_upload/');
|
|
128
|
+
url.searchParams.append('profile_id', profileID);
|
|
129
|
+
url.searchParams.append('av', ctx.userID);
|
|
130
|
+
url.searchParams.append('__aaid', '0');
|
|
131
|
+
url.searchParams.append('__user', ctx.userID);
|
|
132
|
+
url.searchParams.append('__a', '1');
|
|
133
|
+
url.searchParams.append('fb_dtsg', ctx.fb_dtsg);
|
|
134
|
+
url.searchParams.append('jazoest', ctx.jazoest);
|
|
135
|
+
url.searchParams.append('lsd', ctx.lsd);
|
|
136
|
+
const uploadResponse = await utils.postFormData(url.toString(), ctx.jar, { file: photoStream }, ctx.globalOptions, ctx);
|
|
137
|
+
const uploadResult = JSON.parse(uploadResponse.body.toString().replace(/^for \(;;\);/, ''));
|
|
138
|
+
if (uploadResult.error || uploadResult.errors) {
|
|
139
|
+
throw new Error(JSON.stringify(uploadResult.error || uploadResult.errors));
|
|
140
|
+
}
|
|
141
|
+
const photoID = uploadResult.payload?.fbid ||
|
|
142
|
+
uploadResult.payload?.photoID ||
|
|
143
|
+
uploadResult.payload?.photo_id ||
|
|
144
|
+
null;
|
|
145
|
+
if (!photoID) {
|
|
146
|
+
throw new Error('Upload succeeded but could not extract photo ID from response.');
|
|
147
|
+
}
|
|
148
|
+
// Step 2: Confirm as cover photo
|
|
149
|
+
const setResult = await setCoverPhoto(photoID, profileID, focus);
|
|
150
|
+
const result = {
|
|
151
|
+
success: true,
|
|
152
|
+
photoID: photoID,
|
|
153
|
+
upload: uploadResult,
|
|
154
|
+
set: setResult,
|
|
155
|
+
};
|
|
156
|
+
callback(null, result);
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
utils.error('uploadCover', err);
|
|
160
|
+
callback(err);
|
|
161
|
+
}
|
|
162
|
+
return returnPromise;
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=uploadCover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploadCover.js","sourceRoot":"","sources":["../../../../src/deltas/apis/users/uploadCover.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,6 +57,22 @@ export default function (defaultFuncs: any, api: any, ctx: any): {
|
|
|
57
57
|
* @throws {Error} If the userID is missing or the API request fails.
|
|
58
58
|
*/
|
|
59
59
|
add: (userID: any) => Promise<any>;
|
|
60
|
+
/**
|
|
61
|
+
* Cancels a sent friend request (hủy lời mời kết bạn đã gửi).
|
|
62
|
+
* @async
|
|
63
|
+
* @param {string} userID The ID of the user whose friend request is to be cancelled.
|
|
64
|
+
* @returns {Promise<Object>} A promise that resolves to the API response data upon successful cancellation.
|
|
65
|
+
* @throws {Error} If the userID is missing or the API request fails.
|
|
66
|
+
*/
|
|
67
|
+
cancelRequest: (userID: any) => Promise<any>;
|
|
68
|
+
/**
|
|
69
|
+
* Unfriends a user (hủy kết bạn).
|
|
70
|
+
* @async
|
|
71
|
+
* @param {string} userID The ID of the user to unfriend.
|
|
72
|
+
* @returns {Promise<Object>} A promise that resolves to the API response data upon successful unfriending.
|
|
73
|
+
* @throws {Error} If the userID is missing or the API request fails.
|
|
74
|
+
*/
|
|
75
|
+
unfriend: (userID: any) => Promise<any>;
|
|
60
76
|
suggest: {
|
|
61
77
|
/**
|
|
62
78
|
* Fetches a list of suggested friends (People You May Know).
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @ChoruOfficial
|
|
3
|
+
* @description A module for updating the Facebook profile bio (tiểu sử).
|
|
4
|
+
* Calls ProfileCometBioFieldSaveMutation via /api/graphql/.
|
|
5
|
+
* @param {Object} defaultFuncs The default functions provided by the API wrapper.
|
|
6
|
+
* @param {Object} api The full API object.
|
|
7
|
+
* @param {Object} ctx The context object containing the user's session state.
|
|
8
|
+
* @returns {Function} An async function that updates the account's bio.
|
|
9
|
+
*/
|
|
10
|
+
export default function (defaultFuncs: any, api: any, ctx: any): (bio: string) => Promise<any>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description A module for uploading a new profile picture (avatar) to Facebook.
|
|
3
|
+
* Two-step process:
|
|
4
|
+
* 1. Upload: sends the image file via multipart/form-data to /profile/picture/upload/
|
|
5
|
+
* 2. Set: calls ProfileCometProfilePictureSetMutation to apply the photo as avatar with optional caption
|
|
6
|
+
* @param {Object} defaultFuncs The default functions provided by the API wrapper.
|
|
7
|
+
* @param {Object} api The full API object.
|
|
8
|
+
* @param {Object} ctx The context object containing the user's session state.
|
|
9
|
+
* @returns {Function} An async function that uploads an avatar image.
|
|
10
|
+
*/
|
|
11
|
+
export default function (defaultFuncs: any, api: any, ctx: any): (imagePath: string, caption?: string, profileID?: string, callback?: any) => Promise<any>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @ChoruOfficial
|
|
3
|
+
* @description A module for uploading a new cover photo (ảnh bìa) to Facebook.
|
|
4
|
+
* Two-step process:
|
|
5
|
+
* 1. Upload: sends the image file via multipart/form-data to /profile/cover/comet_upload/
|
|
6
|
+
* 2. Confirm: calls ProfileCometCoverPhotoUpdateMutation to apply the photo as cover
|
|
7
|
+
* @param {Object} defaultFuncs The default functions provided by the API wrapper.
|
|
8
|
+
* @param {Object} api The full API object.
|
|
9
|
+
* @param {Object} ctx The context object containing the user's session state.
|
|
10
|
+
* @returns {Function} An async function that uploads a cover photo.
|
|
11
|
+
*/
|
|
12
|
+
export default function (defaultFuncs: any, api: any, ctx: any): (imagePath: string, profileID?: string, focus?: {
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
}, callback?: any) => Promise<any>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bb-fca",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.3",
|
|
4
4
|
"description": "BB-FCA is a powerful and user-friendly Facebook Chat API wrapper for Node.js, designed to simplify the process of creating chatbots and automating interactions on Facebook Messenger. With BB-FCA, developers can easily send messages, manage conversations, and interact with the Facebook Messenger platform using a simple and intuitive API.",
|
|
5
5
|
"main": "dist/core/client.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -301,6 +301,96 @@ export default function (defaultFuncs: any, api: any, ctx: any) {
|
|
|
301
301
|
}
|
|
302
302
|
},
|
|
303
303
|
|
|
304
|
+
/**
|
|
305
|
+
* Cancels a sent friend request (hủy lời mời kết bạn đã gửi).
|
|
306
|
+
* @async
|
|
307
|
+
* @param {string} userID The ID of the user whose friend request is to be cancelled.
|
|
308
|
+
* @returns {Promise<Object>} A promise that resolves to the API response data upon successful cancellation.
|
|
309
|
+
* @throws {Error} If the userID is missing or the API request fails.
|
|
310
|
+
*/
|
|
311
|
+
cancelRequest: async function (userID) {
|
|
312
|
+
try {
|
|
313
|
+
if (!userID) throw new Error('userID is required.');
|
|
314
|
+
const variables = {
|
|
315
|
+
input: {
|
|
316
|
+
cancelled_friend_requestee_id: userID,
|
|
317
|
+
click_correlation_id: Date.now().toString(),
|
|
318
|
+
click_proof_validation_result: '{"validated":true}',
|
|
319
|
+
friending_channel: 'PROFILE_BUTTON',
|
|
320
|
+
actor_id: ctx.userID,
|
|
321
|
+
client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
|
|
322
|
+
},
|
|
323
|
+
scale: 1,
|
|
324
|
+
};
|
|
325
|
+
const form = {
|
|
326
|
+
av: ctx.userID,
|
|
327
|
+
__user: ctx.userID,
|
|
328
|
+
__a: '1',
|
|
329
|
+
fb_dtsg: ctx.fb_dtsg,
|
|
330
|
+
jazoest: ctx.jazoest,
|
|
331
|
+
lsd: ctx.lsd,
|
|
332
|
+
fb_api_caller_class: 'RelayModern',
|
|
333
|
+
fb_api_req_friendly_name: 'FriendingCometFriendRequestCancelMutation',
|
|
334
|
+
variables: JSON.stringify(variables),
|
|
335
|
+
doc_id: '24453541284254355',
|
|
336
|
+
};
|
|
337
|
+
const res = await defaultFuncs.post(
|
|
338
|
+
'https://www.facebook.com/api/graphql/',
|
|
339
|
+
ctx.jar,
|
|
340
|
+
form,
|
|
341
|
+
{},
|
|
342
|
+
);
|
|
343
|
+
if (res.data.errors) throw new Error(JSON.stringify(res.data.errors));
|
|
344
|
+
return res.data.data;
|
|
345
|
+
} catch (err) {
|
|
346
|
+
throw err;
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* Unfriends a user (hủy kết bạn).
|
|
352
|
+
* @async
|
|
353
|
+
* @param {string} userID The ID of the user to unfriend.
|
|
354
|
+
* @returns {Promise<Object>} A promise that resolves to the API response data upon successful unfriending.
|
|
355
|
+
* @throws {Error} If the userID is missing or the API request fails.
|
|
356
|
+
*/
|
|
357
|
+
unfriend: async function (userID) {
|
|
358
|
+
try {
|
|
359
|
+
if (!userID) throw new Error('userID is required.');
|
|
360
|
+
const variables = {
|
|
361
|
+
input: {
|
|
362
|
+
source: 'bd_profile_button',
|
|
363
|
+
unfriended_user_id: userID,
|
|
364
|
+
actor_id: ctx.userID,
|
|
365
|
+
client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
|
|
366
|
+
},
|
|
367
|
+
scale: 1,
|
|
368
|
+
};
|
|
369
|
+
const form = {
|
|
370
|
+
av: ctx.userID,
|
|
371
|
+
__user: ctx.userID,
|
|
372
|
+
__a: '1',
|
|
373
|
+
fb_dtsg: ctx.fb_dtsg,
|
|
374
|
+
jazoest: ctx.jazoest,
|
|
375
|
+
lsd: ctx.lsd,
|
|
376
|
+
fb_api_caller_class: 'RelayModern',
|
|
377
|
+
fb_api_req_friendly_name: 'FriendingCometUnfriendMutation',
|
|
378
|
+
variables: JSON.stringify(variables),
|
|
379
|
+
doc_id: '24028849793460009',
|
|
380
|
+
};
|
|
381
|
+
const res = await defaultFuncs.post(
|
|
382
|
+
'https://www.facebook.com/api/graphql/',
|
|
383
|
+
ctx.jar,
|
|
384
|
+
form,
|
|
385
|
+
{},
|
|
386
|
+
);
|
|
387
|
+
if (res.data.errors) throw new Error(JSON.stringify(res.data.errors));
|
|
388
|
+
return res.data.data;
|
|
389
|
+
} catch (err) {
|
|
390
|
+
throw err;
|
|
391
|
+
}
|
|
392
|
+
},
|
|
393
|
+
|
|
304
394
|
suggest: {
|
|
305
395
|
/**
|
|
306
396
|
* Fetches a list of suggested friends (People You May Know).
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @ChoruOfficial
|
|
3
|
+
* @description A module for updating the Facebook profile bio (tiểu sử).
|
|
4
|
+
* Calls ProfileCometBioFieldSaveMutation via /api/graphql/.
|
|
5
|
+
* @param {Object} defaultFuncs The default functions provided by the API wrapper.
|
|
6
|
+
* @param {Object} api The full API object.
|
|
7
|
+
* @param {Object} ctx The context object containing the user's session state.
|
|
8
|
+
* @returns {Function} An async function that updates the account's bio.
|
|
9
|
+
*/
|
|
10
|
+
export default function (defaultFuncs: any, api: any, ctx: any) {
|
|
11
|
+
/**
|
|
12
|
+
* Updates the profile bio (tiểu sử) of the logged-in user.
|
|
13
|
+
* @async
|
|
14
|
+
* @param {string} bio The new bio text to set. Pass an empty string to clear the bio.
|
|
15
|
+
* @returns {Promise<Object>} A promise that resolves to the API response data on success.
|
|
16
|
+
* @throws {Error} If the API request fails.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* await api.changeBio('day la tieu su doi toi');
|
|
20
|
+
* await api.changeBio(''); // clear bio
|
|
21
|
+
*/
|
|
22
|
+
return async function changeBio(bio: string): Promise<any> {
|
|
23
|
+
if (bio === undefined || bio === null) {
|
|
24
|
+
throw new Error('bio is required. Pass an empty string to clear it.');
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// sectionToken = base64("app_section:<userID>:2327158227")
|
|
28
|
+
const sectionToken = Buffer.from(
|
|
29
|
+
`app_section:${ctx.userID}:2327158227`,
|
|
30
|
+
).toString('base64');
|
|
31
|
+
|
|
32
|
+
const variables = {
|
|
33
|
+
collectionToken: 'UNKNOWN',
|
|
34
|
+
input: {
|
|
35
|
+
bio: bio,
|
|
36
|
+
profile_field_section_type: 'DIRECTORY_BIO',
|
|
37
|
+
actor_id: ctx.userID,
|
|
38
|
+
client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
|
|
39
|
+
},
|
|
40
|
+
scale: 1,
|
|
41
|
+
sectionToken: sectionToken,
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const form = {
|
|
45
|
+
av: ctx.userID,
|
|
46
|
+
__user: ctx.userID,
|
|
47
|
+
__a: '1',
|
|
48
|
+
fb_dtsg: ctx.fb_dtsg,
|
|
49
|
+
jazoest: ctx.jazoest,
|
|
50
|
+
lsd: ctx.lsd,
|
|
51
|
+
fb_api_caller_class: 'RelayModern',
|
|
52
|
+
fb_api_req_friendly_name: 'ProfileCometBioFieldSaveMutation',
|
|
53
|
+
variables: JSON.stringify(variables),
|
|
54
|
+
server_timestamps: 'true',
|
|
55
|
+
doc_id: '26787878704133086',
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const res = await defaultFuncs.post(
|
|
59
|
+
'https://www.facebook.com/api/graphql/',
|
|
60
|
+
ctx.jar,
|
|
61
|
+
form,
|
|
62
|
+
{},
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
if (res.data.errors) throw new Error(JSON.stringify(res.data.errors));
|
|
66
|
+
return res.data.data;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import utils = require('../../../utils');
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @description A module for uploading a new profile picture (avatar) to Facebook.
|
|
6
|
+
* Two-step process:
|
|
7
|
+
* 1. Upload: sends the image file via multipart/form-data to /profile/picture/upload/
|
|
8
|
+
* 2. Set: calls ProfileCometProfilePictureSetMutation to apply the photo as avatar with optional caption
|
|
9
|
+
* @param {Object} defaultFuncs The default functions provided by the API wrapper.
|
|
10
|
+
* @param {Object} api The full API object.
|
|
11
|
+
* @param {Object} ctx The context object containing the user's session state.
|
|
12
|
+
* @returns {Function} An async function that uploads an avatar image.
|
|
13
|
+
*/
|
|
14
|
+
export default function (defaultFuncs: any, api: any, ctx: any) {
|
|
15
|
+
/**
|
|
16
|
+
* Step 2 — Apply the uploaded photo as avatar via ProfileCometProfilePictureSetMutation.
|
|
17
|
+
* @private
|
|
18
|
+
* @param {string} photoID The ID of the uploaded photo.
|
|
19
|
+
* @param {string} profileID The profile ID.
|
|
20
|
+
* @param {string} caption Optional caption for the avatar.
|
|
21
|
+
*/
|
|
22
|
+
async function setProfilePicture(photoID: string, profileID: string, caption = '') {
|
|
23
|
+
const variables = {
|
|
24
|
+
input: {
|
|
25
|
+
attribution_id_v2: `ProfileCometTimelineListViewRoot.react,comet.profile.timeline.list,via_cold_start,${Date.now()},473818,190055527696468,,`,
|
|
26
|
+
caption: caption,
|
|
27
|
+
existing_photo_id: photoID,
|
|
28
|
+
expiration_time: null,
|
|
29
|
+
profile_id: profileID,
|
|
30
|
+
profile_pic_method: 'EXISTING',
|
|
31
|
+
profile_pic_source: 'TIMELINE',
|
|
32
|
+
scaled_crop_rect: { height: 0.56328, width: 1, x: 0, y: 0.21836 },
|
|
33
|
+
skip_cropping: true,
|
|
34
|
+
actor_id: ctx.userID,
|
|
35
|
+
client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
|
|
36
|
+
},
|
|
37
|
+
isPage: false,
|
|
38
|
+
isProfile: true,
|
|
39
|
+
sectionToken: 'UNKNOWN',
|
|
40
|
+
collectionToken: 'UNKNOWN',
|
|
41
|
+
scale: 1,
|
|
42
|
+
'__relay_internal__pv__ProfileGeminiIsCoinFlipEnabledrelayprovider': false,
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const form = {
|
|
46
|
+
av: ctx.userID,
|
|
47
|
+
__user: ctx.userID,
|
|
48
|
+
__a: '1',
|
|
49
|
+
fb_dtsg: ctx.fb_dtsg,
|
|
50
|
+
jazoest: ctx.jazoest,
|
|
51
|
+
lsd: ctx.lsd,
|
|
52
|
+
fb_api_caller_class: 'RelayModern',
|
|
53
|
+
fb_api_req_friendly_name: 'ProfileCometProfilePictureSetMutation',
|
|
54
|
+
variables: JSON.stringify(variables),
|
|
55
|
+
server_timestamps: 'true',
|
|
56
|
+
doc_id: '26101621736123633',
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const res = await defaultFuncs.post(
|
|
60
|
+
'https://www.facebook.com/api/graphql/',
|
|
61
|
+
ctx.jar,
|
|
62
|
+
form,
|
|
63
|
+
{},
|
|
64
|
+
);
|
|
65
|
+
if (res.data.errors) throw new Error(JSON.stringify(res.data.errors));
|
|
66
|
+
return res.data;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Uploads a new profile picture (avatar) for the logged-in user, then sets it as avatar with optional caption.
|
|
71
|
+
* @async
|
|
72
|
+
* @param {string} imagePath The local file path to the image to upload.
|
|
73
|
+
* @param {string} [caption=''] Optional caption for the profile picture post.
|
|
74
|
+
* @param {string} [profileID=ctx.userID] The profile ID to upload the avatar for. Defaults to the logged-in user.
|
|
75
|
+
* @param {Function} [callback] Optional callback function.
|
|
76
|
+
* @returns {Promise<Object>} A promise that resolves with { upload, set } data on success.
|
|
77
|
+
* @throws {Error} If the imagePath is missing, the file does not exist, or any step fails.
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* await api.uploadAvatar('/path/to/photo.jpg');
|
|
81
|
+
* await api.uploadAvatar('/path/to/photo.jpg', 'My new avatar!');
|
|
82
|
+
* await api.uploadAvatar('/path/to/photo.jpg', 'Caption', '61588408996667');
|
|
83
|
+
*/
|
|
84
|
+
return async function uploadAvatar(
|
|
85
|
+
imagePath: string,
|
|
86
|
+
caption: string = '',
|
|
87
|
+
profileID: string = ctx.userID,
|
|
88
|
+
callback?,
|
|
89
|
+
): Promise<any> {
|
|
90
|
+
let resolveFunc: Function = function () { };
|
|
91
|
+
let rejectFunc: Function = function () { };
|
|
92
|
+
|
|
93
|
+
const returnPromise = new Promise<any>(function (resolve, reject) {
|
|
94
|
+
resolveFunc = resolve;
|
|
95
|
+
rejectFunc = reject;
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
callback =
|
|
99
|
+
callback ||
|
|
100
|
+
function (err, data) {
|
|
101
|
+
if (err) return rejectFunc(err);
|
|
102
|
+
resolveFunc(data);
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
try {
|
|
106
|
+
if (!imagePath) throw new Error('imagePath is required.');
|
|
107
|
+
if (typeof imagePath !== 'string')
|
|
108
|
+
throw new Error('imagePath must be a string.');
|
|
109
|
+
if (!fs.existsSync(imagePath))
|
|
110
|
+
throw new Error(`File not found: ${imagePath}`);
|
|
111
|
+
|
|
112
|
+
// Step 1: Upload the photo
|
|
113
|
+
const photoStream = fs.createReadStream(imagePath);
|
|
114
|
+
|
|
115
|
+
const url = new URL('https://www.facebook.com/profile/picture/upload/');
|
|
116
|
+
url.searchParams.append('photo_source', '57');
|
|
117
|
+
url.searchParams.append('profile_id', profileID);
|
|
118
|
+
url.searchParams.append('av', ctx.userID);
|
|
119
|
+
url.searchParams.append('__aaid', '0');
|
|
120
|
+
url.searchParams.append('__user', ctx.userID);
|
|
121
|
+
url.searchParams.append('__a', '1');
|
|
122
|
+
url.searchParams.append('fb_dtsg', ctx.fb_dtsg);
|
|
123
|
+
url.searchParams.append('jazoest', ctx.jazoest);
|
|
124
|
+
url.searchParams.append('lsd', ctx.lsd);
|
|
125
|
+
|
|
126
|
+
const uploadResponse = await utils.postFormData(
|
|
127
|
+
url.toString(),
|
|
128
|
+
ctx.jar,
|
|
129
|
+
{ file: photoStream },
|
|
130
|
+
ctx.globalOptions,
|
|
131
|
+
ctx,
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
const uploadResult = JSON.parse(
|
|
135
|
+
uploadResponse.body.toString().replace(/^for \(;;\);/, ''),
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
if (uploadResult.error || uploadResult.errors) {
|
|
139
|
+
throw new Error(
|
|
140
|
+
JSON.stringify(uploadResult.error || uploadResult.errors),
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
const photoID =
|
|
145
|
+
uploadResult.payload?.fbid ||
|
|
146
|
+
uploadResult.payload?.photoID ||
|
|
147
|
+
uploadResult.payload?.photo_id ||
|
|
148
|
+
null;
|
|
149
|
+
|
|
150
|
+
if (!photoID) {
|
|
151
|
+
throw new Error('Upload succeeded but could not extract photo ID from response.');
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// Step 2: Set as profile picture with caption
|
|
155
|
+
const setResult = await setProfilePicture(photoID, profileID, caption);
|
|
156
|
+
|
|
157
|
+
const result = {
|
|
158
|
+
success: true,
|
|
159
|
+
photoID: photoID,
|
|
160
|
+
upload: uploadResult,
|
|
161
|
+
set: setResult,
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
callback(null, result);
|
|
165
|
+
} catch (err) {
|
|
166
|
+
utils.error('uploadAvatar', err);
|
|
167
|
+
callback(err);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
return returnPromise;
|
|
171
|
+
};
|
|
172
|
+
}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import utils = require('../../../utils');
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @ChoruOfficial
|
|
6
|
+
* @description A module for uploading a new cover photo (ảnh bìa) to Facebook.
|
|
7
|
+
* Two-step process:
|
|
8
|
+
* 1. Upload: sends the image file via multipart/form-data to /profile/cover/comet_upload/
|
|
9
|
+
* 2. Confirm: calls ProfileCometCoverPhotoUpdateMutation to apply the photo as cover
|
|
10
|
+
* @param {Object} defaultFuncs The default functions provided by the API wrapper.
|
|
11
|
+
* @param {Object} api The full API object.
|
|
12
|
+
* @param {Object} ctx The context object containing the user's session state.
|
|
13
|
+
* @returns {Function} An async function that uploads a cover photo.
|
|
14
|
+
*/
|
|
15
|
+
export default function (defaultFuncs: any, api: any, ctx: any) {
|
|
16
|
+
/**
|
|
17
|
+
* Step 2 — Confirm the uploaded photo as cover via ProfileCometCoverPhotoUpdateMutation.
|
|
18
|
+
* @private
|
|
19
|
+
* @param {string} photoID The ID of the uploaded photo.
|
|
20
|
+
* @param {string} profileID The profile ID.
|
|
21
|
+
* @param {{ x: number, y: number }} [focus] Optional focus point. Defaults to center {x:0.5, y:0.5}.
|
|
22
|
+
*/
|
|
23
|
+
async function setCoverPhoto(
|
|
24
|
+
photoID: string,
|
|
25
|
+
profileID: string,
|
|
26
|
+
focus = { x: 0.5, y: 0.5 },
|
|
27
|
+
) {
|
|
28
|
+
const variables = {
|
|
29
|
+
input: {
|
|
30
|
+
attribution_id_v2: `ProfileCometAboutTabRoot.react,comet.profile.collection.about,via_cold_start,${Date.now()},670164,,,`,
|
|
31
|
+
cover_photo_id: photoID,
|
|
32
|
+
focus: focus,
|
|
33
|
+
target_user_id: profileID,
|
|
34
|
+
actor_id: ctx.userID,
|
|
35
|
+
client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
|
|
36
|
+
},
|
|
37
|
+
scale: 1,
|
|
38
|
+
contextualProfileContext: null,
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const form = {
|
|
42
|
+
av: ctx.userID,
|
|
43
|
+
__user: ctx.userID,
|
|
44
|
+
__a: '1',
|
|
45
|
+
fb_dtsg: ctx.fb_dtsg,
|
|
46
|
+
jazoest: ctx.jazoest,
|
|
47
|
+
lsd: ctx.lsd,
|
|
48
|
+
fb_api_caller_class: 'RelayModern',
|
|
49
|
+
fb_api_req_friendly_name: 'ProfileCometCoverPhotoUpdateMutation',
|
|
50
|
+
variables: JSON.stringify(variables),
|
|
51
|
+
server_timestamps: 'true',
|
|
52
|
+
doc_id: '31388044007461211',
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const res = await defaultFuncs.post(
|
|
56
|
+
'https://www.facebook.com/api/graphql/',
|
|
57
|
+
ctx.jar,
|
|
58
|
+
form,
|
|
59
|
+
{},
|
|
60
|
+
);
|
|
61
|
+
if (res.data.errors) throw new Error(JSON.stringify(res.data.errors));
|
|
62
|
+
return res.data;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Uploads a new cover photo (ảnh bìa) for the logged-in user, then confirms it as the cover.
|
|
67
|
+
* @async
|
|
68
|
+
* @param {string} imagePath The local file path to the image to upload.
|
|
69
|
+
* @param {string} [profileID=ctx.userID] The profile ID. Defaults to the logged-in user.
|
|
70
|
+
* @param {{ x: number, y: number }} [focus] Optional focus point for cropping. Defaults to {x:0.5, y:0.5}.
|
|
71
|
+
* @param {Function} [callback] Optional callback function.
|
|
72
|
+
* @returns {Promise<Object>} A promise that resolves with { upload, set } data on success.
|
|
73
|
+
* @throws {Error} If the imagePath is missing, the file does not exist, or any step fails.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* await api.uploadCover('/path/to/cover.jpg');
|
|
77
|
+
* await api.uploadCover('/path/to/cover.jpg', '61588408996667');
|
|
78
|
+
* await api.uploadCover('/path/to/cover.jpg', ctx.userID, { x: 0.5, y: 0.3 });
|
|
79
|
+
*/
|
|
80
|
+
return async function uploadCover(
|
|
81
|
+
imagePath: string,
|
|
82
|
+
profileID: string = ctx.userID,
|
|
83
|
+
focus = { x: 0.5, y: 0.5 },
|
|
84
|
+
callback?,
|
|
85
|
+
): Promise<any> {
|
|
86
|
+
let resolveFunc: Function = function () { };
|
|
87
|
+
let rejectFunc: Function = function () { };
|
|
88
|
+
|
|
89
|
+
const returnPromise = new Promise<any>(function (resolve, reject) {
|
|
90
|
+
resolveFunc = resolve;
|
|
91
|
+
rejectFunc = reject;
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
callback =
|
|
95
|
+
callback ||
|
|
96
|
+
function (err, data) {
|
|
97
|
+
if (err) return rejectFunc(err);
|
|
98
|
+
resolveFunc(data);
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
try {
|
|
102
|
+
if (!imagePath) throw new Error('imagePath is required.');
|
|
103
|
+
if (typeof imagePath !== 'string')
|
|
104
|
+
throw new Error('imagePath must be a string.');
|
|
105
|
+
if (!fs.existsSync(imagePath))
|
|
106
|
+
throw new Error(`File not found: ${imagePath}`);
|
|
107
|
+
|
|
108
|
+
// Step 1: Upload the photo
|
|
109
|
+
const photoStream = fs.createReadStream(imagePath);
|
|
110
|
+
|
|
111
|
+
const url = new URL('https://www.facebook.com/profile/cover/comet_upload/');
|
|
112
|
+
url.searchParams.append('profile_id', profileID);
|
|
113
|
+
url.searchParams.append('av', ctx.userID);
|
|
114
|
+
url.searchParams.append('__aaid', '0');
|
|
115
|
+
url.searchParams.append('__user', ctx.userID);
|
|
116
|
+
url.searchParams.append('__a', '1');
|
|
117
|
+
url.searchParams.append('fb_dtsg', ctx.fb_dtsg);
|
|
118
|
+
url.searchParams.append('jazoest', ctx.jazoest);
|
|
119
|
+
url.searchParams.append('lsd', ctx.lsd);
|
|
120
|
+
|
|
121
|
+
const uploadResponse = await utils.postFormData(
|
|
122
|
+
url.toString(),
|
|
123
|
+
ctx.jar,
|
|
124
|
+
{ file: photoStream },
|
|
125
|
+
ctx.globalOptions,
|
|
126
|
+
ctx,
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
const uploadResult = JSON.parse(
|
|
130
|
+
uploadResponse.body.toString().replace(/^for \(;;\);/, ''),
|
|
131
|
+
);
|
|
132
|
+
|
|
133
|
+
if (uploadResult.error || uploadResult.errors) {
|
|
134
|
+
throw new Error(
|
|
135
|
+
JSON.stringify(uploadResult.error || uploadResult.errors),
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
const photoID =
|
|
140
|
+
uploadResult.payload?.fbid ||
|
|
141
|
+
uploadResult.payload?.photoID ||
|
|
142
|
+
uploadResult.payload?.photo_id ||
|
|
143
|
+
null;
|
|
144
|
+
|
|
145
|
+
if (!photoID) {
|
|
146
|
+
throw new Error('Upload succeeded but could not extract photo ID from response.');
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Step 2: Confirm as cover photo
|
|
150
|
+
const setResult = await setCoverPhoto(photoID, profileID, focus);
|
|
151
|
+
|
|
152
|
+
const result = {
|
|
153
|
+
success: true,
|
|
154
|
+
photoID: photoID,
|
|
155
|
+
upload: uploadResult,
|
|
156
|
+
set: setResult,
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
callback(null, result);
|
|
160
|
+
} catch (err) {
|
|
161
|
+
utils.error('uploadCover', err);
|
|
162
|
+
callback(err);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return returnPromise;
|
|
166
|
+
};
|
|
167
|
+
}
|