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