Skip to content

Commit 544dff1

Browse files
committed
Communication with orbiter to start/close game servers and get their status
1 parent 47126f1 commit 544dff1

3 files changed

Lines changed: 37 additions & 3 deletions

File tree

Site/src/lib/server/economy.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const economyUrl = "localhost:2009"
66
export const economyConnFailed = "Cannot connect to Economy service"
77

88
export type ReturnValue<T> = Promise<{ ok: true; value: T } | { ok: false }>
9-
type ReturnErr = { ok: true } | { ok: false; msg: string }
9+
export type ReturnErr = { ok: true } | { ok: false; msg: string }
1010

1111
const tryFetch =
1212
<T>(transform: (res: Response) => Promise<T>) =>

Site/src/lib/server/orbiter.ts

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { ReturnValue } from "./economy"
1+
import type { ReturnErr, ReturnValue } from "./economy"
22

33
const orbiterUrl = "http://localhost:64991"
44

@@ -18,3 +18,33 @@ export async function listGameservers(): ReturnValue<GameserverId[]> {
1818
return { ok: false }
1919
}
2020
}
21+
22+
export async function getGameserver(placeId: number): ReturnValue<Gameserver> {
23+
try {
24+
const res = await fetch(`${orbiterUrl}/${placeId}`)
25+
if (!res.ok) return { ok: false }
26+
return { ok: true, value: await res.json() }
27+
} catch {
28+
return { ok: false }
29+
}
30+
}
31+
32+
async function fetchGameserver(
33+
path: string | number,
34+
method: string
35+
): Promise<ReturnErr> {
36+
try {
37+
const res = await fetch(`${orbiterUrl}/${path}`, { method })
38+
if (!res.ok) return { ok: false, msg: await res.text() }
39+
} catch (err) {
40+
const e = err as Error
41+
return { ok: false, msg: e.message }
42+
}
43+
return { ok: true }
44+
}
45+
46+
export const startGameserver = async (placeId: number) =>
47+
fetchGameserver(placeId, "post")
48+
49+
export const closeGameserver = async (placeId: number) =>
50+
fetchGameserver(placeId, "delete")

Site/src/routes/(main)/place/[id=asset]/[name]/+page.server.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,13 @@ export async function load({ locals, params, url }) {
6464
if (!couldMatch(place.name, params.name))
6565
redirect(302, `/place/${id}/${slug}`)
6666

67+
const hosting = config.Gameservers.Hosting
68+
if (hosting === "Dedicated hosting" || hosting === "Both") {
69+
}
70+
6771
return {
6872
scheme: config.LauncherURI,
69-
hosting: config.Gameservers.Hosting,
73+
hosting,
7074
slug,
7175
place,
7276
thumbnails: [id % thumbnails.length],

0 commit comments

Comments
 (0)