2024-06-24 10:18:35 +02:00
|
|
|
import Core from './core.js'
|
|
|
|
|
|
|
|
export default class ragemp extends Core {
|
2024-06-29 22:27:19 +02:00
|
|
|
constructor () {
|
2024-06-24 10:18:35 +02:00
|
|
|
super()
|
|
|
|
this.usedTcp = true
|
|
|
|
}
|
|
|
|
|
2024-06-29 22:27:19 +02:00
|
|
|
async run (state) {
|
2024-06-24 10:18:35 +02:00
|
|
|
const results = await this.request({
|
|
|
|
url: 'https://cdn.rage.mp/master/v2/',
|
|
|
|
responseType: 'json'
|
|
|
|
})
|
|
|
|
|
|
|
|
if (results == null) {
|
|
|
|
throw new Error('Unable to retrieve master server list')
|
|
|
|
}
|
|
|
|
|
|
|
|
const targetID = `${this.options.host}:${this.options.port}`
|
|
|
|
|
|
|
|
let serverResult = null
|
|
|
|
let serverInfo = null
|
|
|
|
|
|
|
|
for (const entry of results) {
|
|
|
|
if (entry.id === targetID) {
|
|
|
|
serverResult = entry
|
|
|
|
serverInfo = entry.servers.at(0)
|
|
|
|
break
|
|
|
|
}
|
|
|
|
|
|
|
|
for (const serverEntry of entry.servers) {
|
|
|
|
if (serverEntry.id === targetID) {
|
|
|
|
serverResult = entry
|
|
|
|
serverInfo = serverEntry
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (serverInfo == null) {
|
|
|
|
throw new Error('Server not found in master server list.')
|
|
|
|
}
|
|
|
|
|
|
|
|
state.name = serverInfo.name
|
|
|
|
state.numplayers = serverInfo.players.amount
|
|
|
|
state.maxplayers = serverInfo.players.max
|
|
|
|
state.raw = serverResult
|
|
|
|
}
|
|
|
|
}
|