From a206dee8301e5a8723daab819f175d7ab01f9029 Mon Sep 17 00:00:00 2001 From: mat Date: Sun, 15 May 2022 22:37:22 -0500 Subject: add very basic auctionprices endpoint --- src/cleaners/skyblock/endedAuctions.ts | 41 ++++++++++++++++++++++++++++++++++ src/cleaners/skyblock/inventory.ts | 17 ++++++-------- 2 files changed, 48 insertions(+), 10 deletions(-) create mode 100644 src/cleaners/skyblock/endedAuctions.ts (limited to 'src/cleaners') diff --git a/src/cleaners/skyblock/endedAuctions.ts b/src/cleaners/skyblock/endedAuctions.ts new file mode 100644 index 0000000..0dfa0ab --- /dev/null +++ b/src/cleaners/skyblock/endedAuctions.ts @@ -0,0 +1,41 @@ +import typedHypixelApi from 'typed-hypixel-api' +import { cleanInventory, headIdFromBase64, Item } from './inventory.js' +import { cleanItemId } from './itemId.js' + + +interface Auction { + id: string + sellerUuid: string + sellerProfileUuid: string + buyerUuid: string + timestamp: number + coins: number + bin: boolean + item: Item +} + +export interface EndedAuctions { + lastUpdated: number + auctions: Auction[] +} + +export async function cleanEndedAuctions(data: typedHypixelApi.SkyBlockRecentlyEndedAuctionsResponse): Promise { + const auctions: Auction[] = [] + for (const auction of data.auctions) { + auctions.push({ + id: auction.auction_id, + sellerUuid: auction.seller, + sellerProfileUuid: auction.seller_profile, + buyerUuid: auction.buyer, + timestamp: auction.timestamp, + coins: auction.price, + bin: auction.bin, + item: (await cleanInventory(auction.item_bytes))[0] + }) + } + + return { + lastUpdated: data.lastUpdated, + auctions + } +} \ No newline at end of file diff --git a/src/cleaners/skyblock/inventory.ts b/src/cleaners/skyblock/inventory.ts index c5ab952..df30be3 100644 --- a/src/cleaners/skyblock/inventory.ts +++ b/src/cleaners/skyblock/inventory.ts @@ -6,7 +6,7 @@ function base64decode(base64: string): Buffer { return Buffer.from(base64, 'base64') } -interface Item { +export interface Item { id: string count: number vanillaId: string @@ -79,15 +79,12 @@ function cleanItems(rawItems): Inventory { return rawItems.map(cleanItem) } -export function cleanInventory(encodedNbt: string): Promise { - return new Promise(resolve => { - const base64Data = base64decode(encodedNbt) - nbt.parse(base64Data, false, (err, value) => { - const simplifiedNbt = nbt.simplify(value) - // do some basic cleaning on the items and return - resolve(cleanItems(simplifiedNbt.i)) - }) - }) +export async function cleanInventory(encodedNbt: string): Promise { + const base64Data = base64decode(encodedNbt) + const value: any = await new Promise((resolve, reject) => nbt.parse(base64Data, false, (err, value) => { if (err) reject(err); else resolve(value) })) + const simplifiedNbt = nbt.simplify(value) + // do some basic cleaning on the items and return + return cleanItems(simplifiedNbt.i) } export const INVENTORIES = { -- cgit