fca-zoebakaaa 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. package/.eslintrc.js +35 -0
  2. package/CHANGELOG.md +2 -0
  3. package/Controllers/Remote.js +4 -0
  4. package/DOCS.md +1738 -0
  5. package/Extra/ExtraAddons.js +80 -0
  6. package/Extra/ExtraFindUID.js +62 -0
  7. package/Extra/ExtraGetThread.js +118 -0
  8. package/Extra/ExtraTranslate.js +62 -0
  9. package/Extra/ExtraUptimeRobot.js +62 -0
  10. package/Extra/Html/Classic/script.js +233 -0
  11. package/Extra/Html/Classic/style.css +8 -0
  12. package/Extra/PM2/ecosystem.config.js +23 -0
  13. package/Extra/Security/Index.js +174 -0
  14. package/Extra/Security/Step_1.js +15 -0
  15. package/Extra/Security/Step_2.js +23 -0
  16. package/Extra/Security/Step_3.js +23 -0
  17. package/Extra/Src/History.js +117 -0
  18. package/Extra/Src/Last-Run.js +65 -0
  19. package/Extra/Src/Premium.js +88 -0
  20. package/Extra/Src/SecurityCheck.js +7 -0
  21. package/Extra/database/SyntheticDatabase.sqlite +0 -0
  22. package/Extra/database/index.js +360 -0
  23. package/Extra/logger.js +74 -0
  24. package/Func/AcceptAgreement.js +36 -0
  25. package/Func/ClearCache.js +68 -0
  26. package/Func/ReportV1.js +55 -0
  27. package/README.md +112 -0
  28. package/Settings/Database.js +21 -0
  29. package/Settings/Location.js +59 -0
  30. package/broadcast.js +40 -0
  31. package/index.js +1353 -0
  32. package/logger.js +75 -0
  33. package/package.json +56 -0
  34. package/src/Premium.js +39 -0
  35. package/src/addExternalModule.js +23 -0
  36. package/src/addUserToGroup.js +101 -0
  37. package/src/appstate.json +0 -0
  38. package/src/changeAdminStatus.js +95 -0
  39. package/src/changeArchivedStatus.js +47 -0
  40. package/src/changeAvt.js +95 -0
  41. package/src/changeBio.js +66 -0
  42. package/src/changeBlockedStatus.js +42 -0
  43. package/src/changeGroupImage.js +124 -0
  44. package/src/changeNickname.js +54 -0
  45. package/src/changeThreadColor.js +67 -0
  46. package/src/changeThreadEmoji.js +50 -0
  47. package/src/createNewGroup.js +78 -0
  48. package/src/createPoll.js +66 -0
  49. package/src/deleteMessage.js +51 -0
  50. package/src/deleteThread.js +49 -0
  51. package/src/forwardAttachment.js +53 -0
  52. package/src/getAccessToken.js +36 -0
  53. package/src/getCurrentUserID.js +8 -0
  54. package/src/getEmojiUrl.js +29 -0
  55. package/src/getFriendsList.js +81 -0
  56. package/src/getMessage.js +85 -0
  57. package/src/getThreadHistory.js +633 -0
  58. package/src/getThreadInfo.js +248 -0
  59. package/src/getThreadList.js +276 -0
  60. package/src/getThreadPictures.js +71 -0
  61. package/src/getUID.js +61 -0
  62. package/src/getUserID.js +62 -0
  63. package/src/getUserInfo.js +68 -0
  64. package/src/getUserInfoV2.js +32 -0
  65. package/src/getUserInfoV3.js +72 -0
  66. package/src/getUserInfoV4.js +57 -0
  67. package/src/getUserInfoV5.js +68 -0
  68. package/src/handleFriendRequest.js +47 -0
  69. package/src/handleMessageRequest.js +63 -0
  70. package/src/httpGet.js +54 -0
  71. package/src/httpPost.js +53 -0
  72. package/src/httpPostFormData.js +46 -0
  73. package/src/listenMqtt.js +1056 -0
  74. package/src/logout.js +73 -0
  75. package/src/markAsDelivered.js +54 -0
  76. package/src/markAsRead.js +82 -0
  77. package/src/markAsReadAll.js +47 -0
  78. package/src/markAsSeen.js +58 -0
  79. package/src/muteThread.js +51 -0
  80. package/src/removeUserFromGroup.js +72 -0
  81. package/src/resolvePhotoUrl.js +39 -0
  82. package/src/searchForThread.js +48 -0
  83. package/src/sendMessage.js +429 -0
  84. package/src/sendTypingIndicator.js +83 -0
  85. package/src/setMessageReaction.js +114 -0
  86. package/src/setPostReaction.js +103 -0
  87. package/src/setTitle.js +86 -0
  88. package/src/threadColors.js +40 -0
  89. package/src/toolspincoinmaster +89 -0
  90. package/src/unfriend.js +48 -0
  91. package/src/unsendMessage.js +40 -0
  92. package/utils.js +2244 -0
  93. package/zoebaka.code-workspace +8 -0
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ var utils = require("../utils");
4
+ var 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
+ var resolveFunc = function () {};
23
+ var rejectFunc = function () {};
24
+ var returnPromise = new Promise(function (resolve, reject) {
25
+ resolveFunc = resolve;
26
+ rejectFunc = reject;
27
+ });
28
+
29
+ if (!callback) {
30
+ callback = function (err, data) {
31
+ if (err) return rejectFunc(err);
32
+ resolveFunc(data);
33
+ };
34
+ }
35
+
36
+ var form = {
37
+ value: name.toLowerCase(),
38
+ viewer: ctx.userID,
39
+ rsp: "search",
40
+ context: "search",
41
+ path: "/home.php",
42
+ request_id: utils.getGUID(),
43
+ };
44
+
45
+ defaultFuncs
46
+ .get("https://www.facebook.com/ajax/typeahead/search.php", ctx.jar, form)
47
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
48
+ .then(function (resData) {
49
+ if (resData.error) throw resData;
50
+
51
+ var data = resData.payload.entries;
52
+
53
+ callback(null, data.map(formatData));
54
+ })
55
+ .catch(function (err) {
56
+ log.error("getUserID", err);
57
+ return callback(err);
58
+ });
59
+
60
+ return returnPromise;
61
+ };
62
+ };
@@ -0,0 +1,68 @@
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
+ };
24
+ }
25
+ }
26
+
27
+ return retObj;
28
+ }
29
+
30
+ module.exports = function (defaultFuncs, api, ctx) {
31
+ return function getUserInfo(id, callback) {
32
+ var resolveFunc = function () {};
33
+ var rejectFunc = function () {};
34
+ var returnPromise = new Promise(function (resolve, reject) {
35
+ resolveFunc = resolve;
36
+ rejectFunc = reject;
37
+ });
38
+
39
+ if (!callback) {
40
+ callback = function (err, userInfo) {
41
+ if (err) return rejectFunc(err);
42
+ resolveFunc(userInfo);
43
+ };
44
+ }
45
+
46
+ if (utils.getType(id) !== "Array") id = [id];
47
+
48
+ var form = {};
49
+ id.map(function (v, i) {
50
+ form["ids[" + i + "]"] = v;
51
+ });
52
+ defaultFuncs
53
+ .post("https://www.facebook.com/chat/user_info/", ctx.jar, form)
54
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
55
+ .then(function (resData) {
56
+ if (resData.error) throw resData;
57
+ return callback(null, formatData(resData.payload.profiles));
58
+ })
59
+ .catch(function (err) {
60
+ log.error(
61
+ "getUserInfo",
62
+ "Lỗi: getUserInfo Có Thể Do Bạn Spam Quá Nhiều !,Hãy Thử Lại !",
63
+ );
64
+ return callback(err);
65
+ });
66
+ return returnPromise;
67
+ };
68
+ };
@@ -0,0 +1,32 @@
1
+ /* eslint-disable linebreak-style */
2
+ "use strict";
3
+
4
+ var utils = require("../utils");
5
+ var log = require("npmlog");
6
+
7
+ module.exports = function (defaultFuncs, api, ctx) {
8
+ return function getUserInfoV2(id, callback) {
9
+ var resolveFunc = function () {};
10
+ var rejectFunc = function () {};
11
+ var returnPromise = new Promise(function (resolve, reject) {
12
+ resolveFunc = resolve;
13
+ rejectFunc = reject;
14
+ });
15
+
16
+ if (!callback) {
17
+ callback = function (err, userInfo) {
18
+ if (err) return rejectFunc(err);
19
+ resolveFunc(userInfo);
20
+ };
21
+ }
22
+ try {
23
+ var { getInfo } = require("../Extra/ExtraAddons");
24
+ getInfo(id, ctx.jar, ctx, defaultFuncs).then((data) => {
25
+ return callback(null, data);
26
+ });
27
+ } catch (e) {
28
+ return callback(null, e);
29
+ }
30
+ return returnPromise;
31
+ };
32
+ };
@@ -0,0 +1,72 @@
1
+ /* eslint-disable linebreak-style */
2
+ "use strict";
3
+
4
+ var utils = require("../utils");
5
+ var log = require("npmlog");
6
+
7
+ module.exports = function (defaultFuncs, api, ctx) {
8
+ return function getUserInfoV3(id, full, callback) {
9
+ if (utils.getType(full) !== "Boolean") {
10
+ throw { error: "getUserInfoV3: full must be a boolean" };
11
+ }
12
+ var resolveFunc = function () {};
13
+ var rejectFunc = function () {};
14
+ var returnPromise = new Promise(function (resolve, reject) {
15
+ resolveFunc = resolve;
16
+ rejectFunc = reject;
17
+ });
18
+
19
+ if (!callback) {
20
+ callback = function (err, userInfo) {
21
+ if (err) return rejectFunc(err);
22
+ resolveFunc(userInfo);
23
+ };
24
+ }
25
+
26
+ var form = {
27
+ av: ctx.userID,
28
+ fb_api_caller_class: "RelayModern",
29
+ fb_api_req_friendly_name: "ProfileCometTimelineFeedRefetchQuery",
30
+ variables: JSON.stringify({
31
+ id: String(id),
32
+ }),
33
+ doc_id: 5092283120862795,
34
+ };
35
+ try {
36
+ defaultFuncs
37
+ .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
38
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
39
+ .then(function (resData) {
40
+ if (resData.error) throw resData;
41
+ switch (full) {
42
+ case true:
43
+ callback(
44
+ null,
45
+ resData[0].data.node.timeline_list_feed_units.edges[0].node,
46
+ );
47
+ break;
48
+ case false:
49
+ callback(
50
+ null,
51
+ resData[0].data.node.timeline_list_feed_units.edges[0].node
52
+ .comet_sections.context_layout.story.comet_sections
53
+ .actor_photo.story.actors[0],
54
+ );
55
+ break;
56
+ default:
57
+ throw { error: "getUserInfoV3: full must be a boolean" };
58
+ }
59
+ })
60
+ .catch(function (err) {
61
+ log.error(
62
+ "getUserInfo",
63
+ "Lỗi: getUserInfo Có Thể Do Bạn Spam Quá Nhiều !,Hãy Thử Lại !",
64
+ );
65
+ return callback(err);
66
+ });
67
+ } catch (e) {
68
+ return callback(null, e);
69
+ }
70
+ return returnPromise;
71
+ };
72
+ };
@@ -0,0 +1,57 @@
1
+ /* eslint-disable linebreak-style */
2
+ "use strict";
3
+
4
+ var utils = require("../utils");
5
+ var log = require("npmlog");
6
+
7
+ module.exports = function (defaultFuncs, api, ctx) {
8
+ return function getUserInfoV4(id, callback) {
9
+ var resolveFunc = function () {};
10
+ var rejectFunc = function () {};
11
+ var returnPromise = new Promise(function (resolve, reject) {
12
+ resolveFunc = resolve;
13
+ rejectFunc = reject;
14
+ });
15
+
16
+ if (!callback) {
17
+ callback = function (err, userInfo) {
18
+ if (err) return rejectFunc(err);
19
+ resolveFunc(userInfo);
20
+ };
21
+ }
22
+
23
+ if (utils.getType(id) !== "Array") id = [id];
24
+
25
+ var form = {
26
+ av: ctx.userID,
27
+ fb_api_caller_class: "RelayModern",
28
+ fb_api_req_friendly_name:
29
+ "PresenceStatusProviderSubscription_ContactProfilesQuery",
30
+ variables: JSON.stringify({
31
+ ids: id,
32
+ }),
33
+ doc_id: 7188178894556645,
34
+ };
35
+ console.log(form);
36
+ try {
37
+ defaultFuncs
38
+ .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
39
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
40
+ .then(function (resData) {
41
+ if (resData.error) throw resData;
42
+ callback(null, resData.data.viewer.chat_sidebar_contact_nodes[0]);
43
+ })
44
+ .catch(function (err) {
45
+ console.log(err);
46
+ log.error(
47
+ "getUserInfo",
48
+ "Lỗi: getUserInfo Có Thể Do Bạn Spam Quá Nhiều !,Hãy Thử Lại !",
49
+ );
50
+ return callback(err);
51
+ });
52
+ } catch (e) {
53
+ return callback(null, e);
54
+ }
55
+ return returnPromise;
56
+ };
57
+ };
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ var utils = require("../utils");
4
+ var log = require("npmlog");
5
+
6
+ module.exports = function (defaultFuncs, api, ctx) {
7
+ return function getUserInfoV5GraphQL(id, callback) {
8
+ var resolveFunc = function () {};
9
+ var rejectFunc = function () {};
10
+ var returnPromise = new Promise(function (resolve, reject) {
11
+ resolveFunc = resolve;
12
+ rejectFunc = reject;
13
+ });
14
+
15
+ if (
16
+ utils.getType(callback) != "Function" &&
17
+ utils.getType(callback) != "AsyncFunction"
18
+ ) {
19
+ callback = function (err, data) {
20
+ if (err) {
21
+ return rejectFunc(err);
22
+ }
23
+ resolveFunc(data);
24
+ };
25
+ }
26
+
27
+ // `queries` has to be a string. I couldn't tell from the dev console. This
28
+ // took me a really long time to figure out. I deserve a cookie for this.
29
+ var form = {
30
+ queries: JSON.stringify({
31
+ o0: {
32
+ // This doc_id is valid as of July 20th, 2020
33
+ doc_id: "5009315269112105",
34
+ query_params: {
35
+ ids: [id],
36
+ },
37
+ },
38
+ }),
39
+ batch_name: "MessengerParticipantsFetcher",
40
+ };
41
+ defaultFuncs
42
+ .post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form)
43
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
44
+ .then(function (resData) {
45
+ if (resData.error) {
46
+ throw resData;
47
+ }
48
+ // This returns us an array of things. The last one is the success /
49
+ // failure one.
50
+ // @TODO What do we do in this case?
51
+ if (resData[resData.length - 1].error_results !== 0) {
52
+ console.error(
53
+ "GetThreadInfo",
54
+ "Bạn Đang Bị Ăn Get Vì Sử Dụng Quá Nhiều !",
55
+ );
56
+ }
57
+ callback(null, resData);
58
+ })
59
+ .catch(function (err) {
60
+ log.error(
61
+ "getThreadInfoGraphQL",
62
+ "Lỗi: getThreadInfoGraphQL Có Thể Do Bạn Spam Quá Nhiều, Hãy Thử Lại !",
63
+ );
64
+ return callback(err);
65
+ });
66
+ return returnPromise;
67
+ };
68
+ };
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ var utils = require("../utils");
4
+ var 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 { error: "Please pass a boolean as a second argument." };
10
+
11
+ var resolveFunc = function () {};
12
+ var rejectFunc = function () {};
13
+ var returnPromise = new Promise(function (resolve, reject) {
14
+ resolveFunc = resolve;
15
+ rejectFunc = reject;
16
+ });
17
+
18
+ if (!callback) {
19
+ callback = function (err, data) {
20
+ if (err) return rejectFunc(err);
21
+ resolveFunc(data);
22
+ };
23
+ }
24
+
25
+ var form = {
26
+ viewer_id: userID,
27
+ "frefs[0]": "jwl",
28
+ floc: "friend_center_requests",
29
+ ref: "/reqs.php",
30
+ action: accept ? "confirm" : "reject",
31
+ };
32
+
33
+ defaultFuncs
34
+ .post("https://www.facebook.com/requests/friends/ajax/", ctx.jar, form)
35
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
36
+ .then(function (resData) {
37
+ if (resData.payload.err) throw { err: resData.payload.err };
38
+ return callback();
39
+ })
40
+ .catch(function (err) {
41
+ log.error("handleFriendRequest", err);
42
+ return callback(err);
43
+ });
44
+
45
+ return returnPromise;
46
+ };
47
+ };
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ var utils = require("../utils");
4
+ var log = require("npmlog");
5
+
6
+ module.exports = function (
7
+ /** @type {{ post: any; postFormData?: (arg0: string, arg1: any, arg2: any, arg3: {}) => any; get?: (arg0: any, arg1: any) => Promise<any>; }} */ defaultFuncs,
8
+ /** @type {any} */ api,
9
+ /** @type {{ jar: any; fb_dtsg?: string; ttstamp?: string; }} */ ctx,
10
+ ) {
11
+ return function handleMessageRequest(
12
+ /** @type {string | any[]} */ threadID,
13
+ /** @type {any} */ accept,
14
+ /** @type {((err: any, data: any) => void) | ((arg0: undefined) => any)} */ callback,
15
+ ) {
16
+ if (utils.getType(accept) !== "Boolean")
17
+ throw { error: "Please pass a boolean as a second argument." };
18
+
19
+ var resolveFunc = function () {};
20
+ var rejectFunc = function () {};
21
+ var returnPromise = new Promise(function (resolve, reject) {
22
+ resolveFunc = resolve;
23
+ rejectFunc = reject;
24
+ });
25
+
26
+ if (!callback) {
27
+ callback = function (/** @type {any} */ err, /** @type {any} */ data) {
28
+ if (err) return rejectFunc(err);
29
+ resolveFunc(data);
30
+ };
31
+ }
32
+
33
+ var form = {
34
+ client: "mercury",
35
+ };
36
+
37
+ if (utils.getType(threadID) !== "Array") threadID = [threadID];
38
+
39
+ var messageBox = accept ? "inbox" : "other";
40
+
41
+ for (var i = 0; i < threadID.length; i++)
42
+ form[messageBox + "[" + i + "]"] = threadID[i];
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 (/** @type {{ error: any; }} */ resData) {
52
+ if (resData.error) throw resData;
53
+
54
+ return callback();
55
+ })
56
+ .catch(function (/** @type {string} */ err) {
57
+ log.error("handleMessageRequest", err);
58
+ return callback(err);
59
+ });
60
+
61
+ return returnPromise;
62
+ };
63
+ };
package/src/httpGet.js ADDED
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ var utils = require("../utils");
4
+ var log = require("npmlog");
5
+
6
+ module.exports = function (defaultFuncs, api, ctx) {
7
+ return function httpGet(url, form, callback, notAPI) {
8
+ var resolveFunc = function () {};
9
+ var rejectFunc = function () {};
10
+
11
+ var returnPromise = new Promise(function (resolve, reject) {
12
+ resolveFunc = resolve;
13
+ rejectFunc = reject;
14
+ });
15
+
16
+ if (
17
+ !callback &&
18
+ (utils.getType(form) == "Function" ||
19
+ utils.getType(form) == "AsyncFunction")
20
+ ) {
21
+ callback = form;
22
+ form = {};
23
+ }
24
+
25
+ form = form || {};
26
+
27
+ callback =
28
+ callback ||
29
+ function (err, data) {
30
+ if (err) return rejectFunc(err);
31
+ resolveFunc(data);
32
+ };
33
+
34
+ if (notAPI) {
35
+ utils
36
+ .get(url, ctx.jar, form, ctx.globalOptions)
37
+ .then((resData) => callback(null, resData.body.toString()))
38
+ .catch(function (err) {
39
+ log.error("httpGet", err);
40
+ return callback(err);
41
+ });
42
+ } else {
43
+ defaultFuncs
44
+ .get(url, ctx.jar, form)
45
+ .then((resData) => callback(null, resData.body.toString()))
46
+ .catch(function (err) {
47
+ log.error("httpGet", err);
48
+ return callback(err);
49
+ });
50
+ }
51
+
52
+ return returnPromise;
53
+ };
54
+ };
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ var utils = require("../utils");
4
+ var log = require("npmlog");
5
+
6
+ module.exports = function (defaultFuncs, api, ctx) {
7
+ return function httpGet(url, form, callback, notAPI) {
8
+ var resolveFunc = function () {};
9
+ var rejectFunc = function () {};
10
+
11
+ var returnPromise = new Promise(function (resolve, reject) {
12
+ resolveFunc = resolve;
13
+ rejectFunc = reject;
14
+ });
15
+
16
+ if (
17
+ !callback &&
18
+ (utils.getType(form) == "Function" ||
19
+ utils.getType(form) == "AsyncFunction")
20
+ ) {
21
+ callback = form;
22
+ form = {};
23
+ }
24
+
25
+ form = form || {};
26
+
27
+ callback =
28
+ callback ||
29
+ function (err, data) {
30
+ if (err) return rejectFunc(err);
31
+ resolveFunc(data);
32
+ };
33
+
34
+ if (notAPI) {
35
+ utils
36
+ .post(url, ctx.jar, form, ctx.globalOptions)
37
+ .then((resData) => callback(null, resData.body.toString()))
38
+ .catch(function (err) {
39
+ log.error("httpPost", err);
40
+ return callback(err);
41
+ });
42
+ } else {
43
+ defaultFuncs
44
+ .post(url, ctx.jar, form, {})
45
+ .then((resData) => callback(null, resData.body.toString()))
46
+ .catch(function (err) {
47
+ log.error("httpPost", err);
48
+ return callback(err);
49
+ });
50
+ }
51
+ return returnPromise;
52
+ };
53
+ };
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ var utils = require("../utils");
4
+ var log = require("npmlog");
5
+
6
+ module.exports = function (defaultFuncs, api, ctx) {
7
+ return function httpPostFormData(url, form, callback) {
8
+ var resolveFunc = function () {};
9
+ var rejectFunc = function () {};
10
+
11
+ var returnPromise = new Promise(function (resolve, reject) {
12
+ resolveFunc = resolve;
13
+ rejectFunc = reject;
14
+ });
15
+
16
+ if (
17
+ !callback &&
18
+ (utils.getType(form) == "Function" ||
19
+ utils.getType(form) == "AsyncFunction")
20
+ ) {
21
+ callback = form;
22
+ form = {};
23
+ }
24
+
25
+ form = form || {};
26
+
27
+ callback =
28
+ callback ||
29
+ function (err, data) {
30
+ if (err) return rejectFunc(err);
31
+ resolveFunc(data);
32
+ };
33
+
34
+ defaultFuncs
35
+ .postFormData(url, ctx.jar, form)
36
+ .then(function (resData) {
37
+ callback(null, resData.body.toString());
38
+ })
39
+ .catch(function (err) {
40
+ log.error("httpPostFormData", err);
41
+ return callback(err);
42
+ });
43
+
44
+ return returnPromise;
45
+ };
46
+ };