add server previews

This commit is contained in:
Lee 2024-04-20 22:49:53 +01:00
parent 436c9be3e5
commit 321db2fb3d
4 changed files with 25 additions and 2 deletions

@ -1,6 +1,6 @@
{ {
"name": "mcutils-library", "name": "mcutils-library",
"version": "1.2.6", "version": "1.3.0",
"description": "", "description": "",
"main": "dist/index.js", "main": "dist/index.js",
"types": "dist/index.d.ts", "types": "dist/index.d.ts",

@ -5,6 +5,7 @@ import {ServerPlatform} from "../types/server/platform";
const serverEndpoint = API_ENDPOINT + "/server/{platform}/{hostname}"; const serverEndpoint = API_ENDPOINT + "/server/{platform}/{hostname}";
const serverIconEndpoint = API_ENDPOINT + "/server/icon/{hostname}"; const serverIconEndpoint = API_ENDPOINT + "/server/icon/{hostname}";
const serverPreviewEndpoint = API_ENDPOINT + "/server/{platform}/preview/{hostname}";
const blockedServerEndpoint = API_ENDPOINT + "/server/blocked/{hostname}"; const blockedServerEndpoint = API_ENDPOINT + "/server/blocked/{hostname}";
/** /**
@ -38,6 +39,19 @@ export async function getServerIcon(hostname: string, port?: 25565): Promise<Buf
return WebRequest.get<Buffer>(serverIconEndpoint.replace("{hostname}", ip)); return WebRequest.get<Buffer>(serverIconEndpoint.replace("{hostname}", ip));
} }
/**
* Gets the preview of a Minecraft server's MOTD.
*
* @param platform the platform of the server
* @param hostname the hostname of the server
* @param port the port of the server
* @returns the server icon, or null if the server does not have an icon
*/
export async function getServerPreview(platform: ServerPlatform, hostname: string, port?: 25565): Promise<Buffer> {
const ip = port ? `${hostname}:${port}` : hostname;
return WebRequest.get<Buffer>(serverPreviewEndpoint.replace("{platform}", platform).replace("{hostname}", ip));
}
/** /**
* Gets the Mojang blocked status of a Minecraft server. * Gets the Mojang blocked status of a Minecraft server.
* *

@ -24,6 +24,7 @@ test("ensureGetPlayerSkinPartSuccess", async () => {
// Test each skin part // Test each skin part
for (const part in skinParts) { for (const part in skinParts) {
const partBuffer = await getPlayerSkinPart(part, player.uniqueId); const partBuffer = await getPlayerSkinPart(part, player.uniqueId);
expect(partBuffer).toBeDefined(); expect(partBuffer).toBeDefined();
expect(partBuffer.byteLength).toBeGreaterThan(0); expect(partBuffer.byteLength).toBeGreaterThan(0);
} }

@ -1,4 +1,4 @@
import {getBlockedStatus, getServer, getServerIcon, ServerPlatform} from "../dist"; import {getBlockedStatus, getServer, getServerIcon, getServerPreview, ServerPlatform} from "../dist";
test("ensureGetServerLookupSuccess", async () => { test("ensureGetServerLookupSuccess", async () => {
const server = await getServer(ServerPlatform.Java, "mc.hypixel.net"); const server = await getServer(ServerPlatform.Java, "mc.hypixel.net");
@ -9,6 +9,7 @@ test("ensureGetServerLookupSuccess", async () => {
test("ensureGetServerIconSuccess", async () => { test("ensureGetServerIconSuccess", async () => {
const icon = await getServerIcon("mc.hypixel.net"); const icon = await getServerIcon("mc.hypixel.net");
expect(icon).toBeDefined(); expect(icon).toBeDefined();
expect(icon.byteLength).toBeGreaterThan(0); // The server has an icon expect(icon.byteLength).toBeGreaterThan(0); // The server has an icon
}); });
@ -19,3 +20,10 @@ test("ensureGetServerBlockedStatusSuccess", async () => {
expect(blocked).toBe(false); // The server is not blocked expect(blocked).toBe(false); // The server is not blocked
}); });
test("ensureGetServerPreviewSuccess", async () => {
const preview = await getServerPreview(ServerPlatform.Java, "mc.hypixel.net");
expect(preview).toBeDefined();
expect(preview.byteLength).toBeGreaterThan(0); // The server has a preview
});