This commit is contained in:
Alex Holliday committed 2026-03-05 18:48:19 +00:00
1 parent 190d9dd2b1
commit 27c44a0fbd
2 files changed
+9 -50

No files matched your search

+4 -1
View File
@@ -82,6 +82,7 @@ import { PageSpeedProvider } from "@/service/infrastructure/network/PageSpeedPro
import { HardwareProvider } from "@/service/infrastructure/network/HardwareProvider.js";
import { DockerProvider } from "@/service/infrastructure/network/DockerProvider.js";
import { PortProvider } from "@/service/infrastructure/network/PortProvider.js";
import { GameProvider } from "@/service/infrastructure/network/GameProvider.js";
export type InitializedServices = {
settingsService: any;
@@ -159,6 +160,7 @@ export const initializeServices = async ({
const hardwareProvider = new HardwareProvider(httpProvider);
const dockerProvider = new DockerProvider(logger, Docker);
const portProvider = new PortProvider(net);
const gameProvider = new GameProvider(logger, GameDig);
const networkService = new NetworkService(
axios,
@@ -180,7 +182,8 @@ export const initializeServices = async ({
pageSpeedProvider,
hardwareProvider,
dockerProvider,
portProvider
portProvider,
gameProvider
);
const emailService = new EmailService(settingsService, fs, path, compile, mjml2html, nodemailer, logger);
@@ -101,6 +101,7 @@ class NetworkService implements INetworkService {
private hardwareProvider;
private dockerProvider;
private portProvider;
private gameProvider;
private buildStatusResponse = <T>({
monitor,
@@ -176,7 +177,8 @@ class NetworkService implements INetworkService {
pagespeedProvider: IStatusProvider<PageSpeedStatusPayload>,
hardwareProvider: IStatusProvider<HardwareStatusPayload>,
dockerProvider: IStatusProvider<DockerStatusPayload>,
portProvider: IStatusProvider<PortStatusPayload>
portProvider: IStatusProvider<PortStatusPayload>,
gameProvider: IStatusProvider<GameStatusPayload>
) {
this.TYPE_PING = "ping";
this.TYPE_HTTP = "http";
@@ -208,6 +210,7 @@ class NetworkService implements INetworkService {
this.hardwareProvider = hardwareProvider;
this.dockerProvider = dockerProvider;
this.portProvider = portProvider;
this.gameProvider = gameProvider;
const cacheable = new CacheableLookup();
this.got = got.extend({
@@ -266,7 +269,7 @@ class NetworkService implements INetworkService {
case this.TYPE_PORT:
return await this.portProvider.handle(monitor);
case this.TYPE_GAME:
return await this.requestGame(monitor);
return await this.gameProvider.handle(monitor);
case this.TYPE_GRPC:
return await this.requestGrpc(monitor);
default:
@@ -628,53 +631,6 @@ class NetworkService implements INetworkService {
}
}
private async requestGame(monitor: Monitor): Promise<MonitorStatusResponse<GameStatusPayload>> {
try {
const { url, port, gameId } = monitor;
const gameResponse = this.buildStatusResponse<GameStatusPayload>({
monitor,
overrides: {
code: 200,
status: true,
message: "Success",
},
});
const state = await this.GameDig.query({
type: gameId ?? "unknown",
host: url,
port: port ?? 0,
}).catch((error: unknown): undefined => {
this.logger.warn({
message: error instanceof Error ? error.message : String(error),
service: this.SERVICE_NAME,
method: "requestGame",
details: { url, port, gameId },
});
return undefined;
});
if (!state) {
gameResponse.code = this.NETWORK_ERROR;
gameResponse.status = false;
gameResponse.message = "No response";
return gameResponse;
}
gameResponse.responseTime = state.ping ?? 0;
gameResponse.payload = state as GameStatusPayload;
return gameResponse;
} catch (err: unknown) {
const originalMessage = err instanceof Error ? err.message : String(err);
throw new AppError({
message: originalMessage || "Error performing game server check",
service: this.SERVICE_NAME,
method: "requestGame",
details: { url: monitor.url, port: monitor.port, gameId: monitor.gameId },
});
}
}
private async requestGrpc(monitor: Monitor): Promise<MonitorStatusResponse<GrpcStatusPayload>> {
try {
const { url, port, ignoreTlsErrors } = monitor;