UNPKG

nobloxmmc.js

Version:

A Node.js wrapper for ROBLOX. (original from sentanos)

72 lines (67 loc) 1.81 kB
// Includes var http = require('../util/http.js').func var getGeneralToken = require('../util/getGeneralToken.js').func var getRole = require('./getRole.js').func // Args exports.required = ['group', 'target', ['rank', 'roleset', 'name']] exports.optional = ['jar'] // Define function setRank (jar, xcsrf, group, target, role) { var httpOpt = { url: `//groups.roblox.com/v1/groups/${group}/users/${target}`, options: { resolveWithFullResponse: true, method: 'PATCH', jar: jar, headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': xcsrf }, body: JSON.stringify({ 'roleId': role.ID }) } } return http(httpOpt) .then(function (res) { if (res.statusCode === 200) { return role } else { let body = JSON.parse(res.body) || {} let error = body.errors[0].message || 'Internal error, make sure the change rank request is valid.' throw new Error(`${res.statusCode} ${error}`) // throw new Error('Internal error, make sure the change rank request is valid.') } }) } function runWithToken (args) { var jar = args.jar return getGeneralToken({ jar: jar }) .then(function (xcsrf) { return setRank(jar, xcsrf, args.group, args.target, args.role) }) } exports.func = function (args) { if (!args.roleset) { var rank = args.rank var opt = { group: args.group } if (!rank) { opt.name = args.name } else { opt.rank = rank } return getRole(opt) .then(function (role) { if (!role) { throw new Error('Role does not exist') } args.role = role return runWithToken(args) }) } else { args.role = { ID: args.roleset } return runWithToken(args) } }