using SPTarkov.DI.Annotations; using SPTarkov.Server.Core.Controllers; 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, string sessionID) { var output = _launcherController.Login(info); return new ValueTask(output ?? "FAILED"); } public async ValueTask Register(string url, RegisterData info, string sessionID) { var output = await _launcherController.Register(info); return string.IsNullOrEmpty(output) ? "FAILED" : "OK"; } public ValueTask Get(string url, LoginRequestData info, string sessionID) { var output = _launcherController.Find(_launcherController.Login(info)); return new ValueTask(_httpResponseUtil.NoBody(output)); } public ValueTask ChangeUsername(string url, ChangeRequestData info, string sessionID) { var output = _launcherController.ChangeUsername(info); return new ValueTask(string.IsNullOrEmpty(output) ? "FAILED" : "OK"); } public ValueTask ChangePassword(string url, ChangeRequestData info, string sessionID) { var output = _launcherController.ChangePassword(info); return new ValueTask(string.IsNullOrEmpty(output) ? "FAILED" : "OK"); } public ValueTask Wipe(string url, RegisterData info, string sessionID) { var output = _launcherController.Wipe(info); return new ValueTask(string.IsNullOrEmpty(output) ? "FAILED" : "OK"); } public ValueTask GetServerVersion() { return new ValueTask(_httpResponseUtil.NoBody(_watermark.GetVersionTag())); } public ValueTask Ping(string url, EmptyRequestData _, string sessionID) { return new ValueTask(_httpResponseUtil.NoBody("pong!")); } public ValueTask RemoveProfile(string url, RemoveProfileData info, string 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 _, string sessionID ) { return new ValueTask( _httpResponseUtil.NoBody(_launcherController.GetServerModsProfileUsed(sessionID)) ); } }