using SPTarkov.Server.Core.Controllers; using SPTarkov.Server.Core.Models.Eft.Common; using SPTarkov.Server.Core.Services; using SPTarkov.Server.Core.Utils; using SPTarkov.Common.Annotations; namespace SPTarkov.Server.Core.Callbacks; [Injectable(InjectableTypeOverride = typeof(DataCallbacks))] public class DataCallbacks( HttpResponseUtil _httpResponseUtil, DatabaseService _databaseService, TraderController _traderController, HideoutController _hideoutController, LocaleService _localeService ) { /// /// Handle client/settings /// /// public string GetSettings(string url, EmptyRequestData _, string sessionID) { var returns = _httpResponseUtil.GetBody(_databaseService.GetSettings()); return returns; } /// /// Handle client/globals /// /// public string GetGlobals(string url, EmptyRequestData _, string sessionID) { var globals = _databaseService.GetGlobals(); var returns = _httpResponseUtil.GetBody(globals); return returns; } /// /// Handle client/items /// /// public string GetTemplateItems(string url, EmptyRequestData _, string sessionID) { return _httpResponseUtil.GetUnclearedBody(_databaseService.GetItems()); } /// /// Handle client/handbook/templates /// /// public string GetTemplateHandbook(string url, EmptyRequestData _, string sessionID) { return _httpResponseUtil.GetBody(_databaseService.GetHandbook()); } /// /// Handle client/customization /// /// public string GetTemplateSuits(string url, EmptyRequestData _, string sessionID) { return _httpResponseUtil.GetBody(_databaseService.GetTemplates().Customization); } /// /// Handle client/account/customization /// /// public string GetTemplateCharacter(string url, EmptyRequestData _, string sessionID) { return _httpResponseUtil.GetBody(_databaseService.GetTemplates().Character); } /// /// Handle client/hideout/settings /// /// public string GetHideoutSettings(string url, EmptyRequestData _, string sessionID) { return _httpResponseUtil.GetBody(_databaseService.GetHideout().Settings); } /// /// Handle client/hideout/areas /// /// public string GetHideoutAreas(string url, EmptyRequestData _, string sessionID) { return _httpResponseUtil.GetBody(_databaseService.GetHideout().Areas); } /// /// Handle client/hideout/production/recipes /// /// public string GetHideoutProduction(string url, EmptyRequestData _, string sessionID) { return _httpResponseUtil.GetBody(_databaseService.GetHideout().Production); } /// /// Handle client/languages /// /// public string GetLocalesLanguages(string url, EmptyRequestData _, string sessionID) { return _httpResponseUtil.GetBody(_databaseService.GetLocales().Languages); } /// /// Handle client/menu/locale /// /// public string GetLocalesMenu(string url, EmptyRequestData _, string 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 _httpResponseUtil.GetBody(result); } /// /// Handle client/locale /// /// public string GetLocalesGlobal(string url, EmptyRequestData _, string sessionID) { var localeId = url.Replace("/client/locale/", ""); var locales = _localeService.GetLocaleDb(localeId); return _httpResponseUtil.GetUnclearedBody(locales); } /// /// Handle client/hideout/qte/list /// /// public string GetQteList(string url, EmptyRequestData _, string sessionID) { return _httpResponseUtil.GetUnclearedBody(_hideoutController.GetQteList(sessionID)); } /// /// Handle client/items/prices/ /// /// public string GetItemPrices(string url, EmptyRequestData _, string sessionID) { var traderId = url.Replace("/client/items/prices/", ""); return _httpResponseUtil.GetBody(_traderController.GetItemPrices(sessionID, traderId)); } }