noblox.ts 4.10.5

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of noblox.ts might be problematic. Click here for more details.

Files changed (259) hide show
  1. package/.eslintrc.js +21 -0
  2. package/.github/FUNDING.yml +3 -0
  3. package/.github/ISSUE_TEMPLATE/bug_report.md +29 -0
  4. package/.github/ISSUE_TEMPLATE/feature_request.md +22 -0
  5. package/.github/workflows/doc-publish.yml +33 -0
  6. package/.github/workflows/npmpublish.yml +70 -0
  7. package/.travis.yml +13 -0
  8. package/CODE_OF_CONDUCT.md +76 -0
  9. package/LICENSE +21 -0
  10. package/README.md +168 -0
  11. package/examples/cleanPlayers.js +130 -0
  12. package/examples/cleanWall.js +110 -0
  13. package/examples/revertRanks.js +100 -0
  14. package/examples/savePlayers.js +119 -0
  15. package/examples/saveWall.js +96 -0
  16. package/img/moderatedThumbnails/moderatedThumbnail_100x100.png +0 -0
  17. package/img/moderatedThumbnails/moderatedThumbnail_110x110.png +0 -0
  18. package/img/moderatedThumbnails/moderatedThumbnail_140x140.png +0 -0
  19. package/img/moderatedThumbnails/moderatedThumbnail_150x150.png +0 -0
  20. package/img/moderatedThumbnails/moderatedThumbnail_150x200.png +0 -0
  21. package/img/moderatedThumbnails/moderatedThumbnail_180x180.png +0 -0
  22. package/img/moderatedThumbnails/moderatedThumbnail_250x250.png +0 -0
  23. package/img/moderatedThumbnails/moderatedThumbnail_30x30.png +0 -0
  24. package/img/moderatedThumbnails/moderatedThumbnail_352x352.png +0 -0
  25. package/img/moderatedThumbnails/moderatedThumbnail_420x420.png +0 -0
  26. package/img/moderatedThumbnails/moderatedThumbnail_48x48.png +0 -0
  27. package/img/moderatedThumbnails/moderatedThumbnail_50x50.png +0 -0
  28. package/img/moderatedThumbnails/moderatedThumbnail_60x60.png +0 -0
  29. package/img/moderatedThumbnails/moderatedThumbnail_720x720.png +0 -0
  30. package/img/moderatedThumbnails/moderatedThumbnail_75x75.png +0 -0
  31. package/img/noblox-js-small.png +0 -0
  32. package/img/noblox-js.png +0 -0
  33. package/img/thumbnailSizes.png +0 -0
  34. package/jsDocsConfig.json +55 -0
  35. package/lib/accountinformation/getUserSocialLinks.js +42 -0
  36. package/lib/accountsettings/block.js +58 -0
  37. package/lib/accountsettings/unblock.js +58 -0
  38. package/lib/asset/deleteFromInventory.js +69 -0
  39. package/lib/asset/getGamePassProductInfo.js +51 -0
  40. package/lib/asset/getProductInfo.js +56 -0
  41. package/lib/asset/uploadAnimation.js +103 -0
  42. package/lib/asset/uploadItem.js +83 -0
  43. package/lib/asset/uploadModel.js +90 -0
  44. package/lib/avatar/avatarRules.js +38 -0
  45. package/lib/avatar/currentlyWearing.js +32 -0
  46. package/lib/avatar/getAvatar.js +35 -0
  47. package/lib/avatar/getCurrentAvatar.js +37 -0
  48. package/lib/avatar/getRecentItems.js +37 -0
  49. package/lib/avatar/outfitDetails.js +32 -0
  50. package/lib/avatar/outfits.js +37 -0
  51. package/lib/avatar/redrawAvatar.js +48 -0
  52. package/lib/avatar/removeAssetId.js +55 -0
  53. package/lib/avatar/setAvatarBodyColors.js +60 -0
  54. package/lib/avatar/setAvatarScales.js +60 -0
  55. package/lib/avatar/setPlayerAvatarType.js +50 -0
  56. package/lib/avatar/setWearingAssets.js +50 -0
  57. package/lib/avatar/wearAssetId.js +55 -0
  58. package/lib/badges/getAwardedTimestamps.js +52 -0
  59. package/lib/badges/getBadgeInfo.js +43 -0
  60. package/lib/badges/getGameBadges.js +62 -0
  61. package/lib/badges/getPlayerBadges.js +28 -0
  62. package/lib/badges/updateBadgeInfo.js +80 -0
  63. package/lib/cache/add.js +14 -0
  64. package/lib/cache/addIf.js +26 -0
  65. package/lib/cache/clear.js +8 -0
  66. package/lib/cache/get.js +28 -0
  67. package/lib/cache/index.js +17 -0
  68. package/lib/cache/new.js +12 -0
  69. package/lib/cache/wrap.js +25 -0
  70. package/lib/chat/addUsersToConversation.js +61 -0
  71. package/lib/chat/chatSettings.js +33 -0
  72. package/lib/chat/getChatMessages.js +40 -0
  73. package/lib/chat/getConversations.js +43 -0
  74. package/lib/chat/getRolloutSettings.js +35 -0
  75. package/lib/chat/getUnreadConversationCount.js +33 -0
  76. package/lib/chat/getUnreadMessages.js +38 -0
  77. package/lib/chat/getUserConversations.js +37 -0
  78. package/lib/chat/markChatAsRead.js +52 -0
  79. package/lib/chat/markChatAsSeen.js +50 -0
  80. package/lib/chat/multiGetLatestMessages.js +37 -0
  81. package/lib/chat/onNewConversation.js +50 -0
  82. package/lib/chat/onNewMessage.js +53 -0
  83. package/lib/chat/onNewMessageBySelf.js +50 -0
  84. package/lib/chat/onUserOnline.js +50 -0
  85. package/lib/chat/onUserTyping.js +54 -0
  86. package/lib/chat/removeFromGroupConversation.js +62 -0
  87. package/lib/chat/renameGroupConversation.js +57 -0
  88. package/lib/chat/sendChatMessage.js +57 -0
  89. package/lib/chat/setChatUserTyping.js +61 -0
  90. package/lib/chat/start121Conversation.js +50 -0
  91. package/lib/chat/startCloudEditConversation.js +50 -0
  92. package/lib/chat/startGroupConversation.js +62 -0
  93. package/lib/client/onNotification.js +70 -0
  94. package/lib/client/setAPIKey.js +18 -0
  95. package/lib/client/setCookie.js +38 -0
  96. package/lib/datastores/deleteDatastoreEntry.js +66 -0
  97. package/lib/datastores/getDatastoreEntry.js +98 -0
  98. package/lib/datastores/getDatastoreEntryVersions.js +83 -0
  99. package/lib/datastores/getDatastoreKeys.js +73 -0
  100. package/lib/datastores/getDatastores.js +72 -0
  101. package/lib/datastores/incrementDatastoreEntry.js +93 -0
  102. package/lib/datastores/setDatastoreEntry.js +90 -0
  103. package/lib/develop/canManage.js +44 -0
  104. package/lib/develop/configureItem.js +142 -0
  105. package/lib/develop/updateUniverse.js +53 -0
  106. package/lib/develop/updateUniverseAccess.js +55 -0
  107. package/lib/economy/buy.js +99 -0
  108. package/lib/economy/getGroupFunds.js +43 -0
  109. package/lib/economy/getGroupRevenueSummary.js +48 -0
  110. package/lib/economy/getGroupTransactions.js +32 -0
  111. package/lib/economy/getResaleData.js +54 -0
  112. package/lib/economy/getResellers.js +35 -0
  113. package/lib/economy/getUserTransactions.js +34 -0
  114. package/lib/economy/onGroupTransaction.js +74 -0
  115. package/lib/friends/acceptFriendRequest.js +59 -0
  116. package/lib/friends/declineAllFriendRequests.js +57 -0
  117. package/lib/friends/declineFriendRequest.js +59 -0
  118. package/lib/friends/getFollowers.js +61 -0
  119. package/lib/friends/getFollowings.js +61 -0
  120. package/lib/friends/getFriendRequests.js +56 -0
  121. package/lib/friends/getFriends.js +53 -0
  122. package/lib/friends/onFriendRequest.js +58 -0
  123. package/lib/friends/removeFriend.js +58 -0
  124. package/lib/friends/sendFriendRequest.js +59 -0
  125. package/lib/friends/unfollow.js +58 -0
  126. package/lib/games/addDeveloperProduct.js +65 -0
  127. package/lib/games/checkDeveloperProductName.js +39 -0
  128. package/lib/games/configureGamePass.js +146 -0
  129. package/lib/games/getDeveloperProducts.js +51 -0
  130. package/lib/games/getGameInstances.js +31 -0
  131. package/lib/games/getGamePasses.js +39 -0
  132. package/lib/games/getGameRevenue.js +49 -0
  133. package/lib/games/getGameSocialLinks.js +45 -0
  134. package/lib/games/getGroupGames.js +30 -0
  135. package/lib/games/getPlaceInfo.js +48 -0
  136. package/lib/games/getUniverseInfo.js +51 -0
  137. package/lib/games/updateDeveloperProduct.js +69 -0
  138. package/lib/groups/changeRank.js +59 -0
  139. package/lib/groups/deleteWallPost.js +64 -0
  140. package/lib/groups/deleteWallPostsByUser.js +59 -0
  141. package/lib/groups/demote.js +25 -0
  142. package/lib/groups/exile.js +59 -0
  143. package/lib/groups/getAuditLog.js +67 -0
  144. package/lib/groups/getGroup.js +57 -0
  145. package/lib/groups/getGroupSocialLinks.js +44 -0
  146. package/lib/groups/getGroups.js +88 -0
  147. package/lib/groups/getJoinRequest.js +52 -0
  148. package/lib/groups/getJoinRequests.js +58 -0
  149. package/lib/groups/getPlayers.js +108 -0
  150. package/lib/groups/getRankInGroup.js +52 -0
  151. package/lib/groups/getRankNameInGroup.js +52 -0
  152. package/lib/groups/getRole.js +64 -0
  153. package/lib/groups/getRolePermissions.js +51 -0
  154. package/lib/groups/getRoles.js +56 -0
  155. package/lib/groups/getShout.js +49 -0
  156. package/lib/groups/getWall.js +59 -0
  157. package/lib/groups/groupPayout.js +103 -0
  158. package/lib/groups/handleJoinRequest.js +60 -0
  159. package/lib/groups/leaveGroup.js +60 -0
  160. package/lib/groups/onAuditLog.js +62 -0
  161. package/lib/groups/onJoinRequest.js +63 -0
  162. package/lib/groups/onJoinRequestHandle.js +105 -0
  163. package/lib/groups/onShout.js +57 -0
  164. package/lib/groups/onWallPost.js +58 -0
  165. package/lib/groups/promote.js +25 -0
  166. package/lib/groups/searchGroups.js +32 -0
  167. package/lib/groups/setGroupDescription.js +65 -0
  168. package/lib/groups/setGroupName.js +66 -0
  169. package/lib/groups/setRank.js +79 -0
  170. package/lib/groups/shout.js +65 -0
  171. package/lib/index.js +30 -0
  172. package/lib/internal/levelOneCopy.js +16 -0
  173. package/lib/internal/queue.js +61 -0
  174. package/lib/internal/timeout.js +30 -0
  175. package/lib/internal/wrap.js +78 -0
  176. package/lib/inventory/getCollectibles.js +31 -0
  177. package/lib/inventory/getInventory.js +32 -0
  178. package/lib/inventory/getInventoryById.js +31 -0
  179. package/lib/inventory/getOwnership.js +54 -0
  180. package/lib/inventory/getUAIDs.js +47 -0
  181. package/lib/itemconfiguration/getGroupAssets.js +32 -0
  182. package/lib/options.js +26 -0
  183. package/lib/party/onPartyDeleted.js +53 -0
  184. package/lib/party/onPartyInvite.js +53 -0
  185. package/lib/party/onPartyJoinedGame.js +53 -0
  186. package/lib/party/onPartyLeftGame.js +53 -0
  187. package/lib/party/onPartySelfJoined.js +53 -0
  188. package/lib/party/onPartySelfLeft.js +53 -0
  189. package/lib/party/onPartyUserJoined.js +53 -0
  190. package/lib/party/onPartyUserLeft.js +53 -0
  191. package/lib/premiumfeatures/getPremium.js +51 -0
  192. package/lib/presence/getPresences.js +63 -0
  193. package/lib/privatemessages/getMessages.js +60 -0
  194. package/lib/privatemessages/message.js +80 -0
  195. package/lib/privatemessages/onMessage.js +88 -0
  196. package/lib/thumbnails/getLogo.js +60 -0
  197. package/lib/thumbnails/getPlayerThumbnail.js +121 -0
  198. package/lib/thumbnails/getThumbnails.js +93 -0
  199. package/lib/trades/acceptTrade.js +58 -0
  200. package/lib/trades/canTradeWith.js +48 -0
  201. package/lib/trades/counterTrade.js +84 -0
  202. package/lib/trades/declineTrade.js +58 -0
  203. package/lib/trades/getTradeInfo.js +52 -0
  204. package/lib/trades/getTrades.js +37 -0
  205. package/lib/trades/sendTrade.js +82 -0
  206. package/lib/users/getBlurb.js +36 -0
  207. package/lib/users/getIdFromUsername.js +53 -0
  208. package/lib/users/getPlayerInfo.js +100 -0
  209. package/lib/users/getUsernameFromId.js +44 -0
  210. package/lib/users/onBlurbChange.js +46 -0
  211. package/lib/util/clearSession.js +32 -0
  212. package/lib/util/generalRequest.js +61 -0
  213. package/lib/util/getAction.js +45 -0
  214. package/lib/util/getCurrentUser.js +44 -0
  215. package/lib/util/getGeneralToken.js +52 -0
  216. package/lib/util/getHash.js +29 -0
  217. package/lib/util/getInputs.js +37 -0
  218. package/lib/util/getPageResults.js +89 -0
  219. package/lib/util/getSenderUserId.js +30 -0
  220. package/lib/util/getSession.js +38 -0
  221. package/lib/util/getVerification.js +60 -0
  222. package/lib/util/getVerificationInputs.js +31 -0
  223. package/lib/util/http.js +110 -0
  224. package/lib/util/jar.js +24 -0
  225. package/lib/util/refreshCookie.js +52 -0
  226. package/lib/util/relog.js +81 -0
  227. package/lib/util/setOptions.js +54 -0
  228. package/lib/util/shortPoll.js +102 -0
  229. package/lib/util/threaded.js +80 -0
  230. package/package.json +94 -0
  231. package/postinstall.js +1 -0
  232. package/settings.json +107 -0
  233. package/test/accountinformation.test.js +27 -0
  234. package/test/accountsettings.test.js +27 -0
  235. package/test/asset.test.js +81 -0
  236. package/test/assets/Great-White-Shark-Fin.rbxm +0 -0
  237. package/test/assets/KeyframeSequence.rbxm +0 -0
  238. package/test/avatar.test.js +164 -0
  239. package/test/badges.test.js +96 -0
  240. package/test/chat.test.js +104 -0
  241. package/test/datastore.test.js +105 -0
  242. package/test/develop.test.js +53 -0
  243. package/test/economy.test.js +137 -0
  244. package/test/friends.test.js +128 -0
  245. package/test/games.test.js +212 -0
  246. package/test/groups.test.js +311 -0
  247. package/test/inventory.test.js +98 -0
  248. package/test/itemconfiguration.test.js +24 -0
  249. package/test/premiumfeatures.test.js +17 -0
  250. package/test/presence.test.js +25 -0
  251. package/test/privatemessages.test.js +33 -0
  252. package/test/thumbnails.test.js +53 -0
  253. package/test/users.test.js +68 -0
  254. package/tutorials/Authentication.md +75 -0
  255. package/tutorials/Event Emitters.md +26 -0
  256. package/tutorials/Promises.md +86 -0
  257. package/tutorials/VPS Authentication.md +72 -0
  258. package/typings/index.d.ts +2525 -0
  259. package/typings/jsDocs.ts +1927 -0
@@ -0,0 +1,59 @@
1
+ // Includes
2
+ const http = require('../util/http.js').func
3
+ const getGeneralToken = require('../util/getGeneralToken.js').func
4
+
5
+ // Args
6
+ exports.required = ['userId']
7
+ exports.optional = ['jar']
8
+
9
+ // Docs
10
+ /**
11
+ * 🔐 Accept a user's friend request.
12
+ * @category User
13
+ * @alias acceptFriendRequest
14
+ * @param {number} userId - The id of the user.
15
+ * @returns {Promise<void>}
16
+ * @example const noblox = require("noblox.js")
17
+ * // Login using your cookie
18
+ * noblox.acceptFriendRequest(123456)
19
+ **/
20
+
21
+ // Define
22
+ function acceptFriendRequest (jar, token, userId) {
23
+ return new Promise((resolve, reject) => {
24
+ const httpOpt = {
25
+ url: `//friends.roblox.com/v1/users/${userId}/accept-friend-request`,
26
+ options: {
27
+ method: 'POST',
28
+ jar: jar,
29
+ headers: {
30
+ 'X-CSRF-TOKEN': token,
31
+ 'Content-Type': 'application/json'
32
+ },
33
+ resolveWithFullResponse: true
34
+ }
35
+ }
36
+ return http(httpOpt)
37
+ .then(function (res) {
38
+ if (res.statusCode === 200) {
39
+ resolve()
40
+ } else {
41
+ const body = JSON.parse(res.body) || {}
42
+ if (body.errors && body.errors.length > 0) {
43
+ const errors = body.errors.map((e) => {
44
+ return e.message
45
+ })
46
+ reject(new Error(`${res.statusCode} ${errors.join(', ')}`))
47
+ }
48
+ }
49
+ })
50
+ })
51
+ }
52
+
53
+ exports.func = function (args) {
54
+ const jar = args.jar
55
+ return getGeneralToken({ jar: jar })
56
+ .then(function (xcsrf) {
57
+ return acceptFriendRequest(jar, xcsrf, args.userId)
58
+ })
59
+ }
@@ -0,0 +1,57 @@
1
+ // Includes
2
+ const http = require('../util/http.js').func
3
+ const getGeneralToken = require('../util/getGeneralToken.js').func
4
+
5
+ // Args
6
+ exports.required = []
7
+ exports.optional = ['jar']
8
+
9
+ // Docs
10
+ /**
11
+ * 🔐 Decline all incoming friend requests.
12
+ * @category User
13
+ * @alias declineAllFriendRequests
14
+ * @returns {Promise<void>}
15
+ * @example const noblox = require("noblox.js")
16
+ * // Login using your cookie
17
+ * noblox.declineAllFriendRequests()
18
+ **/
19
+
20
+ // Define
21
+ function declineAllFriendRequests (jar, token) {
22
+ return new Promise((resolve, reject) => {
23
+ const httpOpt = {
24
+ url: '//friends.roblox.com/v1/user/friend-requests/decline-all',
25
+ options: {
26
+ method: 'POST',
27
+ jar: jar,
28
+ headers: {
29
+ 'X-CSRF-TOKEN': token
30
+ },
31
+ resolveWithFullResponse: true
32
+ }
33
+ }
34
+ return http(httpOpt)
35
+ .then(function (res) {
36
+ if (res.statusCode === 200) {
37
+ resolve()
38
+ } else {
39
+ const body = JSON.parse(res.body) || {}
40
+ if (body.errors && body.errors.length > 0) {
41
+ const errors = body.errors.map((e) => {
42
+ return e.message
43
+ })
44
+ reject(new Error(`${res.statusCode} ${errors.join(', ')}`))
45
+ }
46
+ }
47
+ })
48
+ })
49
+ }
50
+
51
+ exports.func = function (args) {
52
+ const jar = args.jar
53
+ return getGeneralToken({ jar: jar })
54
+ .then(function (xcsrf) {
55
+ return declineAllFriendRequests(jar, xcsrf)
56
+ })
57
+ }
@@ -0,0 +1,59 @@
1
+ // Includes
2
+ const http = require('../util/http.js').func
3
+ const getGeneralToken = require('../util/getGeneralToken.js').func
4
+
5
+ // Args
6
+ exports.required = ['userId']
7
+ exports.optional = ['jar']
8
+
9
+ // Docs
10
+ /**
11
+ * 🔐 Decline a user's friend request.
12
+ * @category User
13
+ * @alias declineFriendRequest
14
+ * @param {number} userId - The id of the user that sent the friend request that is being declined.
15
+ * @returns {Promise<void>}
16
+ * @example const noblox = require("noblox.js")
17
+ * // Login using your cookie
18
+ * noblox.declineFriendRequest(123456)
19
+ **/
20
+
21
+ // Define
22
+ function declineFriendRequest (jar, token, userId) {
23
+ return new Promise((resolve, reject) => {
24
+ const httpOpt = {
25
+ url: `//friends.roblox.com/v1/users/${userId}/decline-friend-request`,
26
+ options: {
27
+ method: 'POST',
28
+ jar: jar,
29
+ headers: {
30
+ 'X-CSRF-TOKEN': token,
31
+ 'Content-Type': 'application/json'
32
+ },
33
+ resolveWithFullResponse: true
34
+ }
35
+ }
36
+ return http(httpOpt)
37
+ .then(function (res) {
38
+ if (res.statusCode === 200) {
39
+ resolve()
40
+ } else {
41
+ const body = JSON.parse(res.body) || {}
42
+ if (body.errors && body.errors.length > 0) {
43
+ const errors = body.errors.map((e) => {
44
+ return e.message
45
+ })
46
+ reject(new Error(`${res.statusCode} ${errors.join(', ')}`))
47
+ }
48
+ }
49
+ })
50
+ })
51
+ }
52
+
53
+ exports.func = function (args) {
54
+ const jar = args.jar
55
+ return getGeneralToken({ jar: jar })
56
+ .then(function (xcsrf) {
57
+ return declineFriendRequest(jar, xcsrf, args.userId)
58
+ })
59
+ }
@@ -0,0 +1,61 @@
1
+ // Includes
2
+ const http = require('../util/http.js').func
3
+
4
+ // Args
5
+ exports.required = ['userId']
6
+ exports.optional = ['sortOrder', 'limit', 'cursor', 'jar']
7
+
8
+ // Docs
9
+ /**
10
+ * ✅ Get a user's followers.
11
+ * @category User
12
+ * @alias getFollowers
13
+ * @param {number} userId - The id of the user whose followers are being returned.
14
+ * @param {Limit=} [limit=10] - The amount of followers being fetched each request.
15
+ * @param {SortOrder=} [sortOrder=Asc] - The order that the data should be sorted by (Asc or Desc)
16
+ * @param {string=} cursor - The cursor for the previous or next page.
17
+ * @returns {Promise<FollowersPage>}
18
+ * @example const noblox = require("noblox.js")
19
+ * let followers = await noblox.getFollowers(123456, "Asc", 10)
20
+ **/
21
+
22
+ // Define
23
+ function getFollowers (jar, userId, sortOrder, limit, cursor) {
24
+ return new Promise((resolve, reject) => {
25
+ const httpOpt = {
26
+ url: `//friends.roblox.com/v1/users/${userId}/followers?limit=${limit}&sortOrder=${sortOrder}&cursor=${cursor}`,
27
+ options: {
28
+ method: 'GET',
29
+ jar: jar,
30
+ resolveWithFullResponse: true
31
+ }
32
+ }
33
+ return http(httpOpt)
34
+ .then(function (res) {
35
+ if (res.statusCode === 200) {
36
+ const response = JSON.parse(res.body)
37
+ response.data = response.data.map((entry) => {
38
+ entry.created = new Date(entry.created)
39
+ return entry
40
+ })
41
+ resolve(response)
42
+ } else {
43
+ const body = JSON.parse(res.body) || {}
44
+ if (body.errors && body.errors.length > 0) {
45
+ const errors = body.errors.map((e) => {
46
+ return e.message
47
+ })
48
+ reject(new Error(`${res.statusCode} ${errors.join(', ')}`))
49
+ }
50
+ }
51
+ })
52
+ })
53
+ }
54
+
55
+ exports.func = function (args) {
56
+ const jar = args.jar
57
+ const sortOrder = args.sortOrder || 'Asc'
58
+ const limit = args.limit || (10).toString()
59
+ const cursor = args.cursor || ''
60
+ return getFollowers(jar, args.userId, sortOrder, limit, cursor)
61
+ }
@@ -0,0 +1,61 @@
1
+ // Includes
2
+ const http = require('../util/http.js').func
3
+
4
+ // Args
5
+ exports.required = ['userId']
6
+ exports.optional = ['sortOrder', 'limit', 'cursor', 'jar']
7
+
8
+ // Docs
9
+ /**
10
+ * ✅ Get the users followed by the user.
11
+ * @category User
12
+ * @alias getFollowings
13
+ * @param {number} userId - The id of the user.
14
+ * @param {Limit=} [limit=10] - The amount of users fetched by each request (10, 25, 50, 100)
15
+ * @param {SortOrder=} [sortOrder=Asc] - The order that the returned data will be sorted by (Asc or Desc)
16
+ * @param {string=} cursor - The previous or next page's cursor.
17
+ * @returns {Promise<FollowingsPage>}
18
+ * @example const noblox = require("noblox.js")
19
+ * let following = await noblox.getFollowings(123456, "Asc", 50)
20
+ **/
21
+
22
+ // Define
23
+ function getFollowings (jar, userId, sortOrder, limit, cursor) {
24
+ return new Promise((resolve, reject) => {
25
+ const httpOpt = {
26
+ url: `//friends.roblox.com/v1/users/${userId}/followings?limit=${limit}&sortOrder=${sortOrder}&cursor=${cursor}`,
27
+ options: {
28
+ method: 'GET',
29
+ jar: jar,
30
+ resolveWithFullResponse: true
31
+ }
32
+ }
33
+ return http(httpOpt)
34
+ .then(function (res) {
35
+ if (res.statusCode === 200) {
36
+ const response = JSON.parse(res.body)
37
+ response.data = response.data.map((entry) => {
38
+ entry.created = new Date(entry.created)
39
+ return entry
40
+ })
41
+ resolve(response)
42
+ } else {
43
+ const body = JSON.parse(res.body) || {}
44
+ if (body.errors && body.errors.length > 0) {
45
+ const errors = body.errors.map((e) => {
46
+ return e.message
47
+ })
48
+ reject(new Error(`${res.statusCode} ${errors.join(', ')}`))
49
+ }
50
+ }
51
+ })
52
+ })
53
+ }
54
+
55
+ exports.func = function (args) {
56
+ const jar = args.jar
57
+ const sortOrder = args.sortOrder || 'Asc'
58
+ const limit = args.limit || (10).toString()
59
+ const cursor = args.cursor || ''
60
+ return getFollowings(jar, args.userId, sortOrder, limit, cursor)
61
+ }
@@ -0,0 +1,56 @@
1
+ // Includes
2
+ const http = require('../util/http.js').func
3
+
4
+ // Args
5
+ exports.required = []
6
+ exports.optional = ['sortOrder', 'limit', 'cursor', 'jar']
7
+
8
+ // Docs
9
+ /**
10
+ * 🔐 Get the friend requests of the authenticated user.
11
+ * @category User
12
+ * @alias getFriendRequests
13
+ * @param {SortOrder=} [sortOrder=Asc] - The order of the returned data (Asc or Desc)
14
+ * @param {Limit=} [limit=10] - The number of users returned by each request.
15
+ * @param {string=} cursor - The previous or next page's cursor.
16
+ * @returns {Promise<FriendRequestsPage>}
17
+ * @example const noblox = require("noblox.js")
18
+ * // Login using your cookie
19
+ * let friendRequests = await noblox.getFriendRequests({sortOrder: "Desc", limit: 100})
20
+ **/
21
+
22
+ // Define
23
+ function getFriendsRequests (args) {
24
+ return new Promise((resolve, reject) => {
25
+ const jar = args.jar
26
+ const httpOpt = {
27
+ url: '//friends.roblox.com/v1/my/friends/requests',
28
+ options: {
29
+ method: 'GET',
30
+ jar: jar,
31
+ resolveWithFullResponse: true
32
+ }
33
+ }
34
+ return http(httpOpt)
35
+ .then(function (res) {
36
+ if (res.statusCode === 200) {
37
+ const response = JSON.parse(res.body)
38
+ response.data = response.data.map((entry) => {
39
+ entry.created = new Date(entry.created)
40
+ return entry
41
+ })
42
+ resolve(response)
43
+ } else {
44
+ const body = JSON.parse(res.body) || {}
45
+ if (body.errors && body.errors.length > 0) {
46
+ const errors = body.errors.map((e) => {
47
+ return e.message
48
+ })
49
+ reject(new Error(`${res.statusCode} ${errors.join(', ')}`))
50
+ }
51
+ }
52
+ })
53
+ })
54
+ }
55
+
56
+ exports.func = getFriendsRequests
@@ -0,0 +1,53 @@
1
+ // Includes
2
+ const http = require('../util/http.js').func
3
+ // Args
4
+ exports.required = ['userId']
5
+ exports.optional = ['jar']
6
+
7
+ // Docs
8
+ /**
9
+ * ✅ Get the friends of a user
10
+ * @category User
11
+ * @alias getFriends
12
+ * @param {number} userId - The id of the user whose friends are being returned.
13
+ * @returns {Promise<Friends>}
14
+ * @example const noblox = require("noblox.js")
15
+ * let friends = await noblox.getFriends(123456)
16
+ **/
17
+
18
+ // Define
19
+ function getFriends (jar, userId) {
20
+ return new Promise((resolve, reject) => {
21
+ const httpOpt = {
22
+ url: `//friends.roblox.com/v1/users/${userId}/friends`,
23
+ options: {
24
+ method: 'GET',
25
+ jar: jar,
26
+ resolveWithFullResponse: true
27
+ }
28
+ }
29
+ return http(httpOpt)
30
+ .then(function (res) {
31
+ if (res.statusCode === 200) {
32
+ const response = JSON.parse(res.body)
33
+ response.data = response.data.map((entry) => {
34
+ entry.created = new Date(entry.created)
35
+ return entry
36
+ })
37
+ resolve(response)
38
+ } else {
39
+ const body = JSON.parse(res.body) || {}
40
+ if (body.errors && body.errors.length > 0) {
41
+ const errors = body.errors.map((e) => {
42
+ return e.message
43
+ })
44
+ reject(new Error(`${res.statusCode} ${errors.join(', ')}`))
45
+ }
46
+ }
47
+ })
48
+ })
49
+ }
50
+
51
+ exports.func = function (args) {
52
+ return getFriends(args.jar, args.userId)
53
+ }
@@ -0,0 +1,58 @@
1
+ // Dependencies
2
+ const events = require('events')
3
+
4
+ // Includes
5
+ const onNotification = require('../client/onNotification.js').func
6
+
7
+ // Args
8
+ exports.optional = ['jar']
9
+
10
+ // Docs
11
+ /**
12
+ * 🔐 An event for when a user sends you a friend request.
13
+ * @category User
14
+ * @alias onFriendRequest
15
+ * @returns An EventEmitter that emits when a user sends you a friend request.
16
+ * @example const noblox = require("noblox.js")
17
+ * // Login using your cookie
18
+ *
19
+ * const friendRequestEvent = noblox.onFriendRequest()
20
+ * friendRequestEvent.on("data", function(data) {
21
+ * console.log("New friend request! ", data)
22
+ * })
23
+ * friendRequestEvent.on("error", function(err) {
24
+ * console.error("Something went wrong: ", err)
25
+ * // Handle error as needed
26
+ * })
27
+ **/
28
+
29
+ // Define
30
+ exports.func = function (args) {
31
+ const jar = args.jar
32
+ const onFriendRequest = new events.EventEmitter()
33
+ const notifications = onNotification({ jar: jar })
34
+ notifications.on('data', function (name, message) {
35
+ if (name === 'FriendshipNotifications' && message.Type === 'FriendshipRequested') {
36
+ onFriendRequest.emit('data', message.EventArgs.UserId1)
37
+ }
38
+ })
39
+ notifications.on('error', function (err) {
40
+ onFriendRequest.emit('error', err)
41
+ })
42
+ notifications.on('connect', function () {
43
+ onFriendRequest.emit('connect')
44
+ })
45
+ notifications.on('close', function (internal) {
46
+ if (internal) {
47
+ return
48
+ }
49
+ onFriendRequest.emit('close', true)
50
+ })
51
+ onFriendRequest.on('close', function (internal) {
52
+ if (internal) {
53
+ return
54
+ }
55
+ notifications.emit('close', true)
56
+ })
57
+ return onFriendRequest
58
+ }
@@ -0,0 +1,58 @@
1
+ // Includes
2
+ const http = require('../util/http.js').func
3
+ const getGeneralToken = require('../util/getGeneralToken.js').func
4
+
5
+ // Args
6
+ exports.required = ['userId']
7
+ exports.optional = ['jar']
8
+
9
+ // Docs
10
+ /**
11
+ * 🔐 Remove a user from your friends list.
12
+ * @category User
13
+ * @alias removeFriend
14
+ * @param {number} userId - The id of the user.
15
+ * @returns {Promise<void>}
16
+ * @example const noblox = require("noblox.js")
17
+ * // Login using your cookie
18
+ * noblox.removeFriend(123456)
19
+ **/
20
+
21
+ // Define
22
+ function removeFriend (jar, token, userId) {
23
+ return new Promise((resolve, reject) => {
24
+ const httpOpt = {
25
+ url: `//friends.roblox.com/v1/users/${userId}/unfriend`,
26
+ options: {
27
+ method: 'POST',
28
+ jar: jar,
29
+ headers: {
30
+ 'X-CSRF-TOKEN': token
31
+ },
32
+ resolveWithFullResponse: true
33
+ }
34
+ }
35
+ return http(httpOpt)
36
+ .then(function (res) {
37
+ if (res.statusCode === 200) {
38
+ resolve()
39
+ } else {
40
+ const body = JSON.parse(res.body) || {}
41
+ if (body.errors && body.errors.length > 0) {
42
+ const errors = body.errors.map((e) => {
43
+ return e.message
44
+ })
45
+ reject(new Error(`${res.statusCode} ${errors.join(', ')}`))
46
+ }
47
+ }
48
+ })
49
+ })
50
+ }
51
+
52
+ exports.func = function (args) {
53
+ const jar = args.jar
54
+ return getGeneralToken({ jar: jar })
55
+ .then(function (xcsrf) {
56
+ return removeFriend(jar, xcsrf, args.userId)
57
+ })
58
+ }
@@ -0,0 +1,59 @@
1
+ // Includes
2
+ const http = require('../util/http.js').func
3
+ const getGeneralToken = require('../util/getGeneralToken.js').func
4
+
5
+ // Args
6
+ exports.required = ['userId']
7
+ exports.optional = ['jar']
8
+
9
+ // Docs
10
+ /**
11
+ * 🔐 Send a friend request to a user.
12
+ * @category User
13
+ * @alias sendFriendRequest
14
+ * @param {number} userId - The id of the user.
15
+ * @returns {Promise<void>}
16
+ * @example const noblox = require("noblox.js")
17
+ * // Login using your cookie
18
+ * noblox.sendFriendRequest(123456)
19
+ **/
20
+
21
+ // Define
22
+ function sendFriendRequest (jar, token, userId) {
23
+ return new Promise((resolve, reject) => {
24
+ const httpOpt = {
25
+ url: `//friends.roblox.com/v1/users/${userId}/request-friendship`,
26
+ options: {
27
+ method: 'POST',
28
+ jar: jar,
29
+ headers: {
30
+ 'X-CSRF-TOKEN': token,
31
+ 'Content-Type': 'application/json'
32
+ },
33
+ resolveWithFullResponse: true
34
+ }
35
+ }
36
+ return http(httpOpt)
37
+ .then(function (res) {
38
+ if (res.statusCode === 200) {
39
+ resolve()
40
+ } else {
41
+ const body = JSON.parse(res.body) || {}
42
+ if (body.errors && body.errors.length > 0) {
43
+ const errors = body.errors.map((e) => {
44
+ return e.message
45
+ })
46
+ reject(new Error(`${res.statusCode} ${errors.join(', ')}`))
47
+ }
48
+ }
49
+ })
50
+ })
51
+ }
52
+
53
+ exports.func = function (args) {
54
+ const jar = args.jar
55
+ return getGeneralToken({ jar: jar })
56
+ .then(function (xcsrf) {
57
+ return sendFriendRequest(jar, xcsrf, args.userId)
58
+ })
59
+ }
@@ -0,0 +1,58 @@
1
+ // Includes
2
+ const http = require('../util/http.js').func
3
+ const getGeneralToken = require('../util/getGeneralToken.js').func
4
+
5
+ // Args
6
+ exports.required = ['userId']
7
+ exports.optional = ['jar']
8
+
9
+ // Docs
10
+ /**
11
+ * 🔐 Unfollow a user.
12
+ * @category User
13
+ * @alias unfollow
14
+ * @param {number} userId - The id of the user.
15
+ * @returns {Promise<void>}
16
+ * @example const noblox = require("noblox.js")
17
+ * // Login using your cookie
18
+ * noblox.unfollow(123456)
19
+ **/
20
+
21
+ // Define
22
+ function unfollow (jar, token, userId) {
23
+ return new Promise((resolve, reject) => {
24
+ const httpOpt = {
25
+ url: `//friends.roblox.com/v1/users/${userId}/unfollow`,
26
+ options: {
27
+ method: 'POST',
28
+ jar: jar,
29
+ headers: {
30
+ 'X-CSRF-TOKEN': token
31
+ },
32
+ resolveWithFullResponse: true
33
+ }
34
+ }
35
+ return http(httpOpt)
36
+ .then(function (res) {
37
+ if (res.statusCode === 200) {
38
+ resolve()
39
+ } else {
40
+ const body = JSON.parse(res.body) || {}
41
+ if (body.errors && body.errors.length > 0) {
42
+ const errors = body.errors.map((e) => {
43
+ return e.message
44
+ })
45
+ reject(new Error(`${res.statusCode} ${errors.join(', ')}`))
46
+ }
47
+ }
48
+ })
49
+ })
50
+ }
51
+
52
+ exports.func = function (args) {
53
+ const jar = args.jar
54
+ return getGeneralToken({ jar: jar })
55
+ .then(function (xcsrf) {
56
+ return unfollow(jar, xcsrf, args.userId)
57
+ })
58
+ }