import type { Allocation } from '@modrinth/utils' import { useServersFetch } from '../servers-fetch.ts' import { ServerModule } from './base.ts' export class NetworkModule extends ServerModule { allocations: Allocation[] = [] async fetch(): Promise { this.allocations = await useServersFetch( `servers/${this.serverId}/allocations`, {}, 'network', ) } async reserveAllocation(name: string): Promise { return await useServersFetch(`servers/${this.serverId}/allocations?name=${name}`, { method: 'POST', }) } async updateAllocation(port: number, name: string): Promise { await useServersFetch(`servers/${this.serverId}/allocations/${port}?name=${name}`, { method: 'PUT', }) } async deleteAllocation(port: number): Promise { await useServersFetch(`servers/${this.serverId}/allocations/${port}`, { method: 'DELETE', }) } async checkSubdomainAvailability(subdomain: string): Promise { const result = (await useServersFetch(`subdomains/${subdomain}/isavailable`)) as { available: boolean } return result.available } async changeSubdomain(subdomain: string): Promise { await useServersFetch(`servers/${this.serverId}/subdomain`, { method: 'POST', body: { subdomain }, }) } }