| | "use strict"; |
| |
|
| | const utils = require("../utils"); |
| | const log = require("npmlog"); |
| |
|
| | |
| | const GENDERS = { |
| | 0: "unknown", |
| | 1: "female_singular", |
| | 2: "male_singular", |
| | 3: "female_singular_guess", |
| | 4: "male_singular_guess", |
| | 5: "mixed", |
| | 6: "neuter_singular", |
| | 7: "unknown_singular", |
| | 8: "female_plural", |
| | 9: "male_plural", |
| | 10: "neuter_plural", |
| | 11: "unknown_plural" |
| | }; |
| |
|
| | function formatData(obj) { |
| | return Object.keys(obj).map(function (key) { |
| | const user = obj[key]; |
| | return { |
| | alternateName: user.alternateName, |
| | firstName: user.firstName, |
| | gender: GENDERS[user.gender], |
| | userID: utils.formatID(user.id.toString()), |
| | isFriend: user.is_friend != null && user.is_friend ? true : false, |
| | fullName: user.name, |
| | profilePicture: user.thumbSrc, |
| | type: user.type, |
| | profileUrl: user.uri, |
| | vanity: user.vanity, |
| | isBirthday: !!user.is_birthday |
| | }; |
| | }); |
| | } |
| |
|
| | module.exports = function (defaultFuncs, api, ctx) { |
| | return function getFriendsList(callback) { |
| | let resolveFunc = function () { }; |
| | let rejectFunc = function () { }; |
| | const returnPromise = new Promise(function (resolve, reject) { |
| | resolveFunc = resolve; |
| | rejectFunc = reject; |
| | }); |
| |
|
| | if (!callback) { |
| | callback = function (err, friendList) { |
| | if (err) { |
| | return rejectFunc(err); |
| | } |
| | resolveFunc(friendList); |
| | }; |
| | } |
| |
|
| | defaultFuncs |
| | .postFormData( |
| | "https://www.facebook.com/chat/user_info_all", |
| | ctx.jar, |
| | {}, |
| | { viewer: ctx.i_userID || ctx.userID } |
| | ) |
| | .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) |
| | .then(function (resData) { |
| | if (!resData) { |
| | throw { error: "getFriendsList returned empty object." }; |
| | } |
| | if (resData.error) { |
| | throw resData; |
| | } |
| | callback(null, formatData(resData.payload)); |
| | }) |
| | .catch(function (err) { |
| | log.error("getFriendsList", err); |
| | return callback(err); |
| | }); |
| |
|
| | return returnPromise; |
| | }; |
| | }; |
| |
|