UNPKG

dashtools

Version:

Library for interacting with Geometry Dash servers

122 lines (120 loc) 4.71 kB
import { genericRequest } from "./generic.js" import * as constants from "../constants.js" import * as utils from "../utils.js" export function getLevelComments(levelID, count, mode, page, instance, params, callback, options, secret) { genericRequest("getComments", {levelID, count, mode, page}, function(data) { if (data < 0) { callback({ comments: [], total: 0, offset: 0, pageSize: 0 }) } else { let segments = data.split("#") let comments = segments[0].split("|").map(u => utils.parseComment(u)) let pages = segments[1].split(":") callback({ comments, total: Number(pages[0]), offset: Number(pages[1]), pageSize: Number(pages[2]), }) } }, instance, params, options, secret) } export function getProfilePosts(accountID, page, total, instance, params, callback, options, secret) { genericRequest("getAccountComments", {accountID, page, count: total}, function(data) { if (data < 0) { callback({ posts: [], total: 0, offset: 0, pageSize: 0 }) } else { let segments = data.split("#") let comments = segments[0].split("|").map(u => utils.parseComment(u)) let pages = segments[1].split(":") callback({ posts: comments, total: Number(pages[0]), offset: Number(pages[1]), pageSize: Number(pages[2]), }) } }, instance, params, options, secret) } export function getCommentHistory(playerID, count, mode, page, instance, params, callback, options, secret) { genericRequest("getCommentHistory", {userID: playerID, count, mode, page}, function(data) { if (data == -1) return callback({comments: []}) let segments = data.split("#") let comments = segments[0].split("|").map(u => utils.parseComment(u)) let pages = segments[1].split(":") callback({ comments, total: Number(pages[0]), offset: Number(pages[1]), pageSize: Number(pages[2]), }) }, instance, params, options, secret) } export function uploadProfilePost(content, instance, params, callback, options, secret) { let extras = {} if (instance.account.username) { extras.userName = instance.account.username extras.chk = utils.chk([extras.userName, utils.base64Encode(content), 0, 0, 1], constants.KEYS.COMMENT, constants.SALTS.COMMENT) } genericRequest("uploadAccountComment", { comment: utils.base64Encode(content), accountID: instance.account.accountID, gjp2: utils.gjp2(instance.account.password), cType: 1, ...extras }, function(data) { callback(data) }, instance, params, options, secret) } export function deleteProfilePost(id, accountID, instance, params, callback, options, secret) { genericRequest("deleteAccountComment", { commentID: id, targetAccountID: (accountID || instance.account.accountID), accountID: instance.account.accountID, gjp2: utils.gjp2(instance.account.password) }, function(data) { if (data == 1) { callback(true) } else { callback(data) } }, instance, params, options, secret) } export function uploadComment(levelID, content, percentage, instance, params, callback, options, secret) { if (!instance.account.username) throw new Error("Must specify account username") let chk = utils.chk([instance.account.username, utils.base64Encode(content), levelID, percentage, 0], constants.KEYS.COMMENT, constants.SALTS.COMMENT) genericRequest("uploadComment", { levelID, comment: utils.base64Encode(content), percent: Number(percentage), gjp2: utils.gjp2(instance.account.password), accountID: instance.account.accountID, chk, userName: instance.account.username }, function(data) { callback(data) }, instance, params, options, secret) } export function deleteComment(levelID, commentID, instance, params, callback, options, secret) { genericRequest("deleteComment", { levelID, commentID, accountID: instance.account.accountID, gjp2: utils.gjp2(instance.account.password) }, function(data) { if (data == 1) { callback(true) } else { callback(data) } }, instance, params, options, secret) }