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 }, }); } }