using SPTarkov.DI.Annotations; using SPTarkov.Server.Core.Controllers; using SPTarkov.Server.Core.Models.Common; using SPTarkov.Server.Core.Models.Eft.Common; using SPTarkov.Server.Core.Models.Eft.Launcher; using SPTarkov.Server.Core.Servers; using SPTarkov.Server.Core.Utils; namespace SPTarkov.Server.Core.Callbacks; [Injectable] public class LauncherCallbacks( HttpResponseUtil httpResponseUtil, LauncherController launcherController, SaveServer saveServer, Watermark watermark ) { public ValueTask Connect() { return new ValueTask(httpResponseUtil.NoBody(launcherController.Connect())); } public ValueTask Login(string url, LoginRequestData info, MongoId sessionID) { var output = launcherController.Login(info); return new ValueTask(output.IsEmpty ? "FAILED" : output.ToString()); } public async ValueTask Register(string url, RegisterData info, MongoId sessionID) { var output = await launcherController.Register(info); return output.IsEmpty ? string.Empty : output.ToString(); } public ValueTask Get(string url, LoginRequestData info, MongoId sessionID) { var output = launcherController.Find(launcherController.Login(info)); return new ValueTask(httpResponseUtil.NoBody(output)); } public ValueTask ChangeUsername(string url, ChangeRequestData info, MongoId sessionID) { var output = launcherController.ChangeUsername(info); return new ValueTask(string.IsNullOrEmpty(output) ? "FAILED" : "OK"); } public ValueTask ChangePassword(string url, ChangeRequestData info, MongoId sessionID) { var output = launcherController.ChangePassword(info); return new ValueTask(string.IsNullOrEmpty(output) ? "FAILED" : "OK"); } public ValueTask Wipe(string url, RegisterData info, MongoId sessionID) { var output = launcherController.Wipe(info); return new ValueTask(output.IsEmpty ? "FAILED" : "OK"); } public ValueTask GetServerVersion() { return new ValueTask(httpResponseUtil.NoBody(watermark.GetVersionTag())); } public ValueTask Ping(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask(httpResponseUtil.NoBody("pong!")); } public ValueTask RemoveProfile(string url, RemoveProfileData info, MongoId sessionID) { return new ValueTask(httpResponseUtil.NoBody(saveServer.RemoveProfile(sessionID))); } public ValueTask GetCompatibleTarkovVersion() { return new ValueTask(httpResponseUtil.NoBody(launcherController.GetCompatibleTarkovVersion())); } public ValueTask GetLoadedServerMods() { return new ValueTask(httpResponseUtil.NoBody(launcherController.GetLoadedServerMods())); } public ValueTask GetServerModsProfileUsed(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask(httpResponseUtil.NoBody(launcherController.GetServerModsProfileUsed(sessionID))); } }