GDBrowser/api/comments.js

82 lines
2.6 KiB
JavaScript
Raw Permalink Normal View History

const Player = require('../classes/Player.js')
2021-12-20 01:23:50 -03:00
module.exports = async (app, req, res) => {
if (req.offline) return res.sendError()
2020-09-28 14:05:59 -03:00
let count = +req.query.count || 10
if (count > 1000) count = 1000
2021-02-01 18:20:03 -03:00
let params = {
userID : req.params.id,
accountID : req.params.id,
levelID: req.params.id,
page: +req.query.page || 0,
2020-09-28 14:05:59 -03:00
count,
mode: req.query.hasOwnProperty("top") ? "1" : "0",
2021-02-01 18:20:03 -03:00
}
let path = "getGJComments21"
2021-02-01 18:20:03 -03:00
if (req.query.type == "commentHistory") { path = "getGJCommentHistory"; delete params.levelID }
else if (req.query.type == "profile") path = "getGJAccountComments20"
2021-02-01 18:20:03 -03:00
req.gdRequest(path, req.gdParams(params), function(err, resp, body) {
if (err) return res.sendError()
2019-10-16 23:20:24 -03:00
comments = body.split('|')
comments = comments.map(x => x.split(':'))
comments = comments.map(x => x.map(x => app.parseResponse(x, "~")))
if (req.query.type == "profile") comments.filter(x => x[0][2])
2021-09-29 23:58:36 -03:00
else comments = comments.filter(x => x[0] && x[0][2])
if (!comments.length) return res.status(204).send([])
2019-10-16 23:20:24 -03:00
2020-09-28 14:05:59 -03:00
let pages = body.split('#')[1].split(":")
let lastPage = +Math.ceil(+pages[0] / +pages[2]);
2019-10-16 23:20:24 -03:00
let commentArray = []
2020-09-28 14:05:59 -03:00
comments.forEach((c, i) => {
2019-10-16 23:20:24 -03:00
var x = c[0] //comment info
var y = c[1] //account info
if (!x[2]) return;
2019-10-16 23:20:24 -03:00
let comment = {}
comment.content = Buffer.from(x[2], 'base64').toString();
2019-11-17 19:00:19 -03:00
comment.ID = x[6]
2020-10-02 15:33:24 -03:00
comment.likes = +x[4]
2021-01-19 02:56:21 -03:00
comment.date = (x[9] || "?") + req.timestampSuffix
if (comment.content.endsWith("⍟") || comment.content.endsWith("☆")) {
comment.content = comment.content.slice(0, -1)
comment.browserColor = true
}
if (req.query.type != "profile") {
let commentUser = new Player(y)
Object.keys(commentUser).forEach(k => {
comment[k] = commentUser[k]
})
comment.levelID = x[1] || req.params.id
2021-09-29 23:58:36 -03:00
comment.playerID = x[3] || 0
2020-09-18 11:02:06 -03:00
comment.color = (comment.playerID == "16" ? "50,255,255" : x[12] || "255,255,255")
2020-10-02 15:33:24 -03:00
if (x[10] > 0) comment.percent = +x[10]
2020-09-18 11:02:06 -03:00
comment.moderator = +x[11] || 0
app.userCache(req.id, comment.accountID, comment.playerID, comment.username)
}
2020-09-28 14:05:59 -03:00
if (i == 0 && req.query.type != "commentHistory") {
comment.results = +pages[0];
comment.pages = lastPage;
comment.range = `${+pages[1] + 1} to ${Math.min(+pages[0], +pages[1] + +pages[2])}`
2020-09-28 14:05:59 -03:00
}
2019-10-16 23:20:24 -03:00
commentArray.push(comment)
})
2022-02-06 21:18:45 -03:00
return res.send(commentArray)
})
}