UNPKG

nobloxmmc.js

Version:

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

82 lines (77 loc) 2.27 kB
// Includes var http = require('../util/http.js').func var getProductInfo = require('./getProductInfo.js').func var getGeneralToken = require('../util/getGeneralToken.js').func // Args exports.required = [['asset', 'product']] exports.optional = ['price', 'jar'] // Define function buy (jar, token, product, price) { var robux = product.PriceInRobux || 0 var productId = product.ProductId if (price) { if (typeof price === 'number') { if (robux !== price) { throw new Error('Price requirement not met. Requested price: ' + price + ' Actual price: ' + robux) } } else if (typeof price === 'object') { var high = price.high var low = price.low if (high) { if (robux > high) { throw new Error('Price requirement not met. Requested price: <=' + high + ' Actual price: ' + robux) } } if (low) { if (robux < low) { throw new Error('Price requirement not met. Requested price: >=' + low + ' Actual price: ' + robux) } } } } var httpOpt = { url: '//www.roblox.com/API/Item.ashx?rqtype=purchase&productID=' + productId + '&expectedCurrency=1&expectedPrice=' + robux + '&expectedSellerID=' + product.Creator.Id + '&userAssetID=' + product.UserAssetId, options: { method: 'POST', jar: jar, headers: { 'X-CSRF-TOKEN': token } } } return http(httpOpt) .then(function (body) { var json = JSON.parse(body) var err = json.errorMsg if (json.showDivID === 'InsufficientFundsView') { err = 'You need ' + Math.abs(json.balanceAfterSale) + ' more robux to purchase this item.' } if (!err) { return { productId: productId, price: robux } } else { throw new Error(err) } }) } function runWithToken (args) { var jar = args.jar return getGeneralToken({ jar: jar }) .then(function (token) { return buy(jar, token, args.product, args.price) }) } exports.func = function (args) { if (!args.product) { return getProductInfo({ asset: args.asset }) .then(function (product) { args.product = product return runWithToken(args) }) } else { return runWithToken(args) } }