Skip to content

Commit b2f92e4

Browse files
committed
Use latest Roblox endpoints
1 parent d6a44e2 commit b2f92e4

12 files changed

+364
-499
lines changed

lib/user/acceptFriendRequest.js

+30-33
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,46 @@
11
// Includes
22
var http = require('../util/http.js').func
33
var getGeneralToken = require('../util/getGeneralToken.js').func
4-
var getSenderUserId = require('../util/getSenderUserId.js').func
54

65
// Args
76
exports.required = ['userId']
87
exports.optional = ['jar']
98

109
// Define
11-
function acceptFriendReqest (jar, token, userId, senderUserId) {
12-
var httpOpt = {
13-
url: '//www.roblox.com/api/friends/acceptfriendrequest',
14-
options: {
15-
method: 'POST',
16-
jar: jar,
17-
headers: {
18-
'X-CSRF-TOKEN': token
19-
},
20-
json: {
21-
targetUserID: userId,
22-
invitationID: senderUserId
23-
},
24-
resolveWithFullResponse: true
10+
function acceptFriendRequest (jar, token, userId) {
11+
return new Promise((resolve, reject) => {
12+
var httpOpt = {
13+
url: `//friends.roblox.com/v1/users/${userId}/accept-friend-request`,
14+
options: {
15+
method: 'POST',
16+
jar: jar,
17+
headers: {
18+
'X-CSRF-TOKEN': token
19+
},
20+
resolveWithFullResponse: true
21+
}
2522
}
26-
}
27-
return http(httpOpt)
28-
.then(function (res) {
29-
if (res.statusCode === 200) {
30-
var body = res.body
31-
if (!body.success) {
32-
throw new Error(body.message)
23+
return http(httpOpt)
24+
.then(function (res) {
25+
if (res.statusCode === 200) {
26+
resolve()
27+
} else {
28+
const body = JSON.parse(res.body) || {}
29+
if (body.errors && body.errors.length > 0) {
30+
var errors = body.errors.map((e) => {
31+
return e.message
32+
})
33+
reject(new Error(`${res.statusCode} ${errors.join(', ')}`))
34+
}
3335
}
34-
} else {
35-
throw new Error('Accept friend request failed')
36-
}
37-
})
36+
})
37+
})
3838
}
3939

40-
exports.func = function (args, senderUserId) {
40+
exports.func = function (args) {
4141
var jar = args.jar
42-
return getSenderUserId({ jar: jar })
43-
.then(function (senderUserId) {
44-
return getGeneralToken({ jar: jar })
45-
.then(function (xcsrf) {
46-
return acceptFriendReqest(jar, xcsrf, args.userId, senderUserId)
47-
})
42+
return getGeneralToken({ jar: jar })
43+
.then(function (xcsrf) {
44+
return acceptFriendRequest(jar, xcsrf, args.userId)
4845
})
4946
}

lib/user/declineFriendRequest.js

+30-33
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,46 @@
11
// Includes
22
var http = require('../util/http.js').func
33
var getGeneralToken = require('../util/getGeneralToken.js').func
4-
var getSenderUserId = require('../util/getSenderUserId.js').func
54

65
// Args
76
exports.required = ['userId']
87
exports.optional = ['jar']
98

109
// Define
11-
function declineFriendRequest (jar, token, userId, senderUserId) {
12-
var httpOpt = {
13-
url: '//www.roblox.com/api/friends/declinefriendrequest',
14-
options: {
15-
method: 'POST',
16-
jar: jar,
17-
headers: {
18-
'X-CSRF-TOKEN': token
19-
},
20-
json: {
21-
targetUserID: userId,
22-
invitationID: senderUserId
23-
},
24-
resolveWithFullResponse: true
10+
function declineFriendRequest (jar, token, userId) {
11+
return new Promise((resolve, reject) => {
12+
var httpOpt = {
13+
url: `//friends.roblox.com/v1/users/${userId}/decline-friend-request`,
14+
options: {
15+
method: 'POST',
16+
jar: jar,
17+
headers: {
18+
'X-CSRF-TOKEN': token
19+
},
20+
resolveWithFullResponse: true
21+
}
2522
}
26-
}
27-
return http(httpOpt)
28-
.then(function (res) {
29-
if (res.statusCode === 200) {
30-
var body = res.body
31-
if (!body.success) {
32-
throw new Error(body.message)
23+
return http(httpOpt)
24+
.then(function (res) {
25+
if (res.statusCode === 200) {
26+
resolve()
27+
} else {
28+
const body = JSON.parse(res.body) || {}
29+
if (body.errors && body.errors.length > 0) {
30+
var errors = body.errors.map((e) => {
31+
return e.message
32+
})
33+
reject(new Error(`${res.statusCode} ${errors.join(', ')}`))
34+
}
3335
}
34-
} else {
35-
throw new Error('Decline friend request failed')
36-
}
37-
})
36+
})
37+
})
3838
}
3939

40-
exports.func = function (args, senderUserId) {
40+
exports.func = function (args) {
4141
var jar = args.jar
42-
return getSenderUserId({ jar: jar })
43-
.then(function (senderUserId) {
44-
return getGeneralToken({ jar: jar })
45-
.then(function (xcsrf) {
46-
return declineFriendRequest(jar, xcsrf, args.userId, senderUserId)
47-
})
42+
return getGeneralToken({ jar: jar })
43+
.then(function (xcsrf) {
44+
return declineFriendRequest(jar, xcsrf, args.userId)
4845
})
4946
}

lib/user/follow.js

+10-12
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,28 @@ exports.optional = ['jar']
1010
function follow (jar, token, userId) {
1111
return new Promise((resolve, reject) => {
1212
var httpOpt = {
13-
url: '//www.roblox.com/user/follow',
13+
url: `//friends.roblox.com/v1/users/${userId}/follow`,
1414
options: {
1515
method: 'POST',
1616
jar: jar,
1717
headers: {
1818
'X-CSRF-TOKEN': token
1919
},
20-
json: {
21-
targetUserId: userId
22-
},
2320
resolveWithFullResponse: true
2421
}
2522
}
2623
return http(httpOpt)
2724
.then(function (res) {
28-
const responseData = JSON.parse(res.body)
29-
if (res.statusCode !== 200) {
30-
let error = 'An unknown error has occurred.'
31-
if (responseData && responseData.errors) {
32-
error = responseData.errors.map((e) => e.message).join('\n')
33-
}
34-
reject(new Error(error))
35-
} else {
25+
if (res.statusCode === 200) {
3626
resolve()
27+
} else {
28+
const body = JSON.parse(res.body) || {}
29+
if (body.errors && body.errors.length > 0) {
30+
var errors = body.errors.map((e) => {
31+
return e.message
32+
})
33+
reject(new Error(`${res.statusCode} ${errors.join(', ')}`))
34+
}
3735
}
3836
})
3937
})

lib/user/getFollowers.js

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
// Includes
2+
var http = require('../util/http.js').func
3+
var getGeneralToken = require('../util/getGeneralToken.js').func
4+
5+
// Args
6+
exports.required = ['userId']
7+
exports.optional = ['sortOrder', 'limit', 'cursor', 'jar']
8+
9+
// Define
10+
function getFollowers (jar, token, userId, sortOrder, limit, cursor) {
11+
return new Promise((resolve, reject) => {
12+
var httpOpt = {
13+
url: `//friends.roblox.com/v1/users/${userId}/followers?limit=${limit}&sortOrder=${sortOrder}&cursor=${cursor}`,
14+
options: {
15+
method: 'GET',
16+
jar: jar,
17+
headers: {
18+
'X-CSRF-TOKEN': token
19+
},
20+
resolveWithFullResponse: true
21+
}
22+
}
23+
return http(httpOpt)
24+
.then(function (res) {
25+
if (res.statusCode === 200) {
26+
resolve(JSON.parse(res.body))
27+
} else {
28+
const body = JSON.parse(res.body) || {}
29+
if (body.errors && body.errors.length > 0) {
30+
var errors = body.errors.map((e) => {
31+
return e.message
32+
})
33+
reject(new Error(`${res.statusCode} ${errors.join(', ')}`))
34+
}
35+
}
36+
})
37+
})
38+
}
39+
40+
exports.func = function (args) {
41+
const jar = args.jar
42+
const sortOrder = args.sortOrder || 'Asc'
43+
const limit = args.limit || (10).toString()
44+
const cursor = args.cursor || ''
45+
return getGeneralToken({ jar: jar })
46+
.then(function (xcsrf) {
47+
return getFollowers(jar, xcsrf, args.userId, sortOrder, limit, cursor)
48+
})
49+
}

lib/user/getFollowings.js

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
// Includes
2+
var http = require('../util/http.js').func
3+
var getGeneralToken = require('../util/getGeneralToken.js').func
4+
5+
// Args
6+
exports.required = ['userId']
7+
exports.optional = ['sortOrder', 'limit', 'cursor', 'jar']
8+
9+
// Define
10+
function getFollowings (jar, token, userId, sortOrder, limit, cursor) {
11+
return new Promise((resolve, reject) => {
12+
var httpOpt = {
13+
url: `//friends.roblox.com/v1/users/${userId}/followings?limit=${limit}&sortOrder=${sortOrder}&cursor=${cursor}`,
14+
options: {
15+
method: 'GET',
16+
jar: jar,
17+
headers: {
18+
'X-CSRF-TOKEN': token
19+
},
20+
resolveWithFullResponse: true
21+
}
22+
}
23+
return http(httpOpt)
24+
.then(function (res) {
25+
if (res.statusCode === 200) {
26+
resolve(JSON.parse(res.body))
27+
} else {
28+
const body = JSON.parse(res.body) || {}
29+
if (body.errors && body.errors.length > 0) {
30+
var errors = body.errors.map((e) => {
31+
return e.message
32+
})
33+
reject(new Error(`${res.statusCode} ${errors.join(', ')}`))
34+
}
35+
}
36+
})
37+
})
38+
}
39+
40+
exports.func = function (args) {
41+
const jar = args.jar
42+
const sortOrder = args.sortOrder || 'Asc'
43+
const limit = args.limit || (10).toString()
44+
const cursor = args.cursor || ''
45+
return getGeneralToken({ jar: jar })
46+
.then(function (xcsrf) {
47+
return getFollowings(jar, xcsrf, args.userId, sortOrder, limit, cursor)
48+
})
49+
}

0 commit comments

Comments
 (0)