| | "use strict"; |
| |
|
| | const utils = require("../utils"); |
| | const log = require("npmlog"); |
| |
|
| | function formatData(data) { |
| | const retObj = {}; |
| |
|
| | for (const prop in data) { |
| | |
| | if (data.hasOwnProperty(prop)) { |
| | const innerObj = data[prop]; |
| | retObj[prop] = { |
| | name: innerObj.name, |
| | firstName: innerObj.firstName, |
| | vanity: innerObj.vanity, |
| | thumbSrc: innerObj.thumbSrc, |
| | profileUrl: innerObj.uri, |
| | gender: innerObj.gender, |
| | type: innerObj.type, |
| | isFriend: innerObj.is_friend, |
| | isBirthday: !!innerObj.is_birthday, |
| | searchTokens: innerObj.searchTokens, |
| | alternateName: innerObj.alternateName |
| | }; |
| | } |
| | } |
| |
|
| | return retObj; |
| | } |
| |
|
| | module.exports = function (defaultFuncs, api, ctx) { |
| | return function getUserInfo(id, 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); |
| | }; |
| | } |
| |
|
| | if (utils.getType(id) !== "Array") { |
| | id = [id]; |
| | } |
| |
|
| | const form = {}; |
| | id.map(function (v, i) { |
| | form["ids[" + i + "]"] = v; |
| | }); |
| | defaultFuncs |
| | .post("https://www.facebook.com/chat/user_info/", ctx.jar, form) |
| | .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) |
| | .then(function (resData) { |
| | if (resData.error) { |
| | throw resData; |
| | } |
| | return callback(null, formatData(resData.payload.profiles)); |
| | }) |
| | .catch(function (err) { |
| | log.error("getUserInfo", err); |
| | return callback(err); |
| | }); |
| |
|
| | return returnPromise; |
| | }; |
| | }; |
| |
|