using SPTarkov.DI.Annotations; using SPTarkov.Server.Core.Controllers; using SPTarkov.Server.Core.DI; using SPTarkov.Server.Core.Models.Eft.Common; using SPTarkov.Server.Core.Models.Spt.Config; using SPTarkov.Server.Core.Servers; using SPTarkov.Server.Core.Utils; namespace SPTarkov.Server.Core.Callbacks; [Injectable(TypePriority = OnLoadOrder.TraderCallbacks)] public class TraderCallbacks( HttpResponseUtil _httpResponseUtil, TraderController _traderController, ConfigServer _configServer ) : IOnLoad, IOnUpdate { private readonly TraderConfig _traderConfig = _configServer.GetConfig(); public Task OnLoad() { _traderController.Load(); return Task.CompletedTask; } public Task OnUpdate(long _) { _traderController.Update(); return Task.FromResult(true); } /// /// Handle client/trading/api/traderSettings /// public ValueTask GetTraderSettings(string url, EmptyRequestData _, string sessionID) { return new ValueTask( _httpResponseUtil.GetBody(_traderController.GetAllTraders(sessionID)) ); } /// /// Handle client/trading/api/getTrader /// public ValueTask GetTrader(string url, EmptyRequestData _, string sessionID) { var traderID = url.Replace("/client/trading/api/getTrader/", ""); return new ValueTask( _httpResponseUtil.GetBody(_traderController.GetTrader(sessionID, traderID)) ); } /// /// Handle client/trading/api/getTraderAssort /// /// public ValueTask GetAssort(string url, EmptyRequestData _, string sessionID) { var traderID = url.Replace("/client/trading/api/getTraderAssort/", ""); return new ValueTask( _httpResponseUtil.GetBody(_traderController.GetAssort(sessionID, traderID)) ); } /// /// Handle /singleplayer/moddedTraders /// /// /// /// Session/player id /// public ValueTask GetModdedTraderData(string url, EmptyRequestData _, string sessionID) { return new ValueTask(_httpResponseUtil.NoBody(_traderConfig.ModdedTraders)); } }