using Core.Annotations; using Core.Controllers; using Core.DI; using Core.Models.Eft.Common; using Core.Models.Eft.Common.Tables; using Core.Models.Eft.HttpResponse; using Core.Models.Enums; using Core.Models.Spt.Config; using Core.Servers; using Core.Utils; namespace Core.Callbacks; [Injectable(TypePriority = OnLoadOrder.TraderCallbacks)] public class TraderCallbacks : OnLoad, OnUpdate { protected HttpResponseUtil _httpResponseUtil; protected TraderController _traderController; protected ConfigServer _configServer; public TraderCallbacks ( HttpResponseUtil httpResponseUtil, TraderController traderController, ConfigServer configServer ) { _httpResponseUtil = httpResponseUtil; _traderController = traderController; _configServer = configServer; } public async Task OnLoad() { _traderController.Load(); } public async Task OnUpdate(long _) { return _traderController.Update(); } public string GetRoute() { return "spt-traders"; } /// /// Handle client/trading/api/traderSettings /// /// /// /// /// public string GetTraderSettings(string url, EmptyRequestData info, string sessionID) { return _httpResponseUtil.GetBody(_traderController.GetAllTraders(sessionID)); } /// /// Handle client/trading/api/getTrader /// /// /// /// /// public string GetTrader(string url, EmptyRequestData info, string sessionID) { var traderID = url.Replace("/client/trading/api/getTrader/", ""); return _httpResponseUtil.GetBody(_traderController.GetTrader(sessionID, traderID)); } /// /// Handle client/trading/api/getTraderAssort /// /// /// /// /// public string GetAssort(string url, EmptyRequestData info, string sessionID) { var traderID = url.Replace("/client/trading/api/getTraderAssort/", ""); return _httpResponseUtil.GetBody(_traderController.GetAssort(sessionID, traderID)); } /// /// Handle /singleplayer/moddedTraders /// /// /// /// /// public string GetModdedTraderData(string url, EmptyRequestData info, string sessionID) { var traderConfig = _configServer.GetConfig(ConfigTypes.TRADER); return _httpResponseUtil.NoBody(traderConfig.ModdedTraders); } }