nyx-dashboard/pages/api/skyblock.js

40 lines
1.3 KiB
JavaScript
Raw Normal View History

2023-03-03 17:48:43 +01:00
const {getItemNetworth} = require("skyhelper-networth");
const nbt = require("prismarine-nbt");
const parseNbt = require("util").promisify(nbt.parse);
async function decodeData(buffer) {
const parsedNbt = await parseNbt(Buffer.from(buffer, "base64"));
return nbt.simplify(parsedNbt);
}
export default async function handler(req, res) {
2023-03-03 23:12:05 +01:00
if (req.method == "POST" || req.method == "GET" || req.method == "PUT") {
2023-03-04 18:25:43 +01:00
if (req.body == "") {
res.status(400).json({error: "No body was provided"});
return;
}
console.log(req.body);
let dat;
2023-03-03 17:48:43 +01:00
try {
2023-03-04 18:25:43 +01:00
dat = JSON.parse(req.body).ByteData || req.body.ByteData;
2023-03-03 17:48:43 +01:00
} catch (e) {
2023-03-04 18:25:43 +01:00
res.status(400).json({error: "ByteData is not a string or undefined"});
return;
}
if (typeof dat !== "string" || typeof dat == "undefined") {
res.status(400).json({error: "ByteData is not a string or undefined"});
return;
}
try {
const data = await getItemNetworth((await decodeData(dat)).i[0], {
cache: true,
});
res.status(200).json(data);
} catch {
res.status(400).json({error: "Invalid ByteData"});
2023-03-03 17:48:43 +01:00
}
} else {
2023-03-04 18:25:43 +01:00
res
.status(400)
.json({error: "This endpoint only accepts GET, POST and PUT requests"});
2023-03-03 17:48:43 +01:00
}
}