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.Services; using SPTarkov.Server.Core.Utils; namespace SPTarkov.Server.Core.Callbacks; [Injectable] public class DataCallbacks( HttpResponseUtil httpResponseUtil, DatabaseService databaseService, TraderController traderController, HideoutController hideoutController, LocaleService localeService ) { /// /// Handle client/settings /// /// public ValueTask GetSettings(string url, EmptyRequestData _, MongoId sessionID) { var returns = httpResponseUtil.GetBody(databaseService.GetSettings()); return new ValueTask(returns); } /// /// Handle client/globals /// /// public ValueTask GetGlobals(string url, EmptyRequestData _, MongoId sessionID) { var globals = databaseService.GetGlobals(); var returns = httpResponseUtil.GetBody(globals); return new ValueTask(returns); } /// /// Handle client/items /// /// public ValueTask GetTemplateItems(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask(httpResponseUtil.GetUnclearedBody(databaseService.GetItems())); } /// /// Handle client/handbook/templates /// /// public ValueTask GetTemplateHandbook(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask(httpResponseUtil.GetBody(databaseService.GetHandbook())); } /// /// Handle client/customization /// /// public ValueTask GetTemplateSuits(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask(httpResponseUtil.GetBody(databaseService.GetTemplates().Customization)); } /// /// Handle client/account/customization /// /// public ValueTask GetTemplateCharacter(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask(httpResponseUtil.GetBody(databaseService.GetTemplates().Character)); } /// /// Handle client/hideout/settings /// /// public ValueTask GetHideoutSettings(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask(httpResponseUtil.GetBody(databaseService.GetHideout().Settings)); } /// /// Handle client/hideout/areas /// /// public ValueTask GetHideoutAreas(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask(httpResponseUtil.GetBody(databaseService.GetHideout().Areas)); } /// /// Handle client/hideout/production/recipes /// /// public ValueTask GetHideoutProduction(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask(httpResponseUtil.GetBody(databaseService.GetHideout().Production)); } /// /// Handle client/languages /// /// public ValueTask GetLocalesLanguages(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask(httpResponseUtil.GetBody(databaseService.GetLocales().Languages)); } /// /// Handle client/menu/locale /// /// public ValueTask GetLocalesMenu(string url, EmptyRequestData _, MongoId sessionID) { var localeId = url.Replace("/client/menu/locale/", ""); var locales = databaseService.GetLocales(); var result = locales.Menu?[localeId] ?? locales.Menu?.FirstOrDefault(m => m.Key == "en").Value; if (result == null) { throw new Exception($"Unable to determine locale for request with {localeId}"); } return new ValueTask(httpResponseUtil.GetBody(result)); } /// /// Handle client/locale /// /// public ValueTask GetLocalesGlobal(string url, EmptyRequestData _, MongoId sessionID) { var localeId = url.Replace("/client/locale/", ""); var locales = localeService.GetLocaleDb(localeId); return new ValueTask(httpResponseUtil.GetUnclearedBody(locales)); } /// /// Handle client/hideout/qte/list /// /// public ValueTask GetQteList(string url, EmptyRequestData _, MongoId sessionID) { return new ValueTask(httpResponseUtil.GetUnclearedBody(hideoutController.GetQteList(sessionID))); } /// /// Handle client/items/prices/ /// /// public ValueTask GetItemPrices(string url, EmptyRequestData _, MongoId sessionID) { var traderId = url.Replace("/client/items/prices/", ""); return new ValueTask(httpResponseUtil.GetBody(traderController.GetItemPrices(sessionID, traderId))); } }