From a43f32d7c7762ea5d4900bef6ab2452f846ccdbe Mon Sep 17 00:00:00 2001 From: CosminPerRam Date: Fri, 8 Mar 2024 23:45:37 +0200 Subject: [PATCH] feat: initial (broken) impl --- protocols/index.js | 5 +++-- protocols/palworldmaster.js | 28 ++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 protocols/palworldmaster.js diff --git a/protocols/index.js b/protocols/index.js index cb34d55..b6d2cb0 100644 --- a/protocols/index.js +++ b/protocols/index.js @@ -56,11 +56,12 @@ import beammpmaster from './beammpmaster.js' import beammp from './beammp.js' import dayz from './dayz.js' import theisleevrima from './theisleevrima.js' +import palworldmaster from './palworldmaster.js' export { - armagetron, ase, asa, assettocorsa, battlefield, buildandshoot, cs2d, discord, doom3, eco, epic, factorio, farmingsimulator, ffow, + armagetron, ase, asa, assettocorsa, battlefield, buildandshoot, cs2d, discord, doom3, eco, epic, factorio, farmingsimulator, ffow, fivem, gamespy1, gamespy2, gamespy3, geneshift, goldsrc, gtasao, hexen2, jc2mp, kspdmp, mafia2mp, mafia2online, minecraft, minecraftbedrock, minecraftvanilla, mumble, mumbleping, nadeo, openttd, palworld, quake1, quake2, quake3, rfactor, samp, savage2, starmade, starsiege, teamspeak2, teamspeak3, terraria, tribes1, tribes1master, unreal2, ut3, valve, - vcmp, ventrilo, warsow, eldewrito, beammpmaster, beammp, dayz, theisleevrima + vcmp, ventrilo, warsow, eldewrito, beammpmaster, beammp, dayz, theisleevrima, palworldmaster } diff --git a/protocols/palworldmaster.js b/protocols/palworldmaster.js new file mode 100644 index 0000000..f88de66 --- /dev/null +++ b/protocols/palworldmaster.js @@ -0,0 +1,28 @@ +import Core from './core.js' + +export default class palworldmaster extends Core { + async run (state) { + let servers = [] + + for await (const batch of this.page()) { + servers = servers.concat(batch) + } + + state.servers = servers + } + + async * page () { + let hasNextPage = true + let currentPage = 1 + while (hasNextPage) { + const request = await this.request({ + url: `https://api.palworldgame.com/server/list?page=${currentPage + 1}`, + responseType: 'json' + }) + + currentPage = request.current_page + hasNextPage = request.is_next_page + yield request.server_list + } + } +}