|
|
"use strict"; |
|
|
|
|
|
const utils = require("../utils"); |
|
|
const log = require("npmlog"); |
|
|
|
|
|
function formatData(data) { |
|
|
return { |
|
|
userID: utils.formatID(data.uid.toString()), |
|
|
photoUrl: data.photo, |
|
|
indexRank: data.index_rank, |
|
|
name: data.text, |
|
|
isVerified: data.is_verified, |
|
|
profileUrl: data.path, |
|
|
category: data.category, |
|
|
score: data.score, |
|
|
type: data.type |
|
|
}; |
|
|
} |
|
|
|
|
|
module.exports = function (defaultFuncs, api, ctx) { |
|
|
return function getUserID(name, 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); |
|
|
}; |
|
|
} |
|
|
|
|
|
const form = { |
|
|
value: name.toLowerCase(), |
|
|
viewer: ctx.i_userID || ctx.userID, |
|
|
rsp: "search", |
|
|
context: "search", |
|
|
path: "/home.php", |
|
|
request_id: utils.getGUID() |
|
|
}; |
|
|
|
|
|
defaultFuncs |
|
|
.get("https://www.facebook.com/ajax/typeahead/search.php", ctx.jar, form) |
|
|
.then(utils.parseAndCheckLogin(ctx, defaultFuncs)) |
|
|
.then(function (resData) { |
|
|
if (resData.error) { |
|
|
throw resData; |
|
|
} |
|
|
|
|
|
const data = resData.payload.entries; |
|
|
|
|
|
callback(null, data.map(formatData)); |
|
|
}) |
|
|
.catch(function (err) { |
|
|
log.error("getUserID", err); |
|
|
return callback(err); |
|
|
}); |
|
|
|
|
|
return returnPromise; |
|
|
}; |
|
|
}; |
|
|
|