Files
SPT-Server-Build/Libraries/Core/Callbacks/TraderCallbacks.cs
T
Chomp ac7b2daeba Renamed interface to IOnLoad
Added OnLoad mod
Expanded `OnLoadOrder` options
2025-02-08 12:18:57 +00:00

88 lines
2.7 KiB
C#

using Core.Controllers;
using Core.DI;
using Core.Models.Eft.Common;
using Core.Models.Spt.Config;
using Core.Servers;
using Core.Utils;
using SptCommon.Annotations;
namespace Core.Callbacks;
[Injectable(InjectableTypeOverride = typeof(IOnLoad), TypePriority = OnLoadOrder.TraderCallbacks)]
[Injectable(InjectableTypeOverride = typeof(OnUpdate), TypePriority = OnUpdateOrder.TraderCallbacks)]
[Injectable(InjectableTypeOverride = typeof(TraderCallbacks))]
public class TraderCallbacks(
HttpResponseUtil _httpResponseUtil,
TraderController _traderController,
ConfigServer _configServer
) : IOnLoad, OnUpdate
{
private readonly TraderConfig _traderConfig = _configServer.GetConfig<TraderConfig>();
public Task OnLoad()
{
_traderController.Load();
return Task.CompletedTask;
}
public string GetRoute()
{
return "spt-traders";
}
public bool OnUpdate(long _)
{
return _traderController.Update();
}
/// <summary>
/// Handle client/trading/api/traderSettings
/// </summary>
/// <param name="url"></param>
/// <param name="info"></param>
/// <param name="sessionID"></param>
/// <returns></returns>
public string GetTraderSettings(string url, EmptyRequestData info, string sessionID)
{
return _httpResponseUtil.GetBody(_traderController.GetAllTraders(sessionID));
}
/// <summary>
/// Handle client/trading/api/getTrader
/// </summary>
/// <param name="url"></param>
/// <param name="info"></param>
/// <param name="sessionID"></param>
/// <returns></returns>
public string GetTrader(string url, EmptyRequestData info, string sessionID)
{
var traderID = url.Replace("/client/trading/api/getTrader/", "");
return _httpResponseUtil.GetBody(_traderController.GetTrader(sessionID, traderID));
}
/// <summary>
/// Handle client/trading/api/getTraderAssort
/// </summary>
/// <param name="url"></param>
/// <param name="info"></param>
/// <param name="sessionID"></param>
/// <returns></returns>
public string GetAssort(string url, EmptyRequestData info, string sessionID)
{
var traderID = url.Replace("/client/trading/api/getTraderAssort/", "");
return _httpResponseUtil.GetBody(_traderController.GetAssort(sessionID, traderID));
}
/// <summary>
/// Handle /singleplayer/moddedTraders
/// </summary>
/// <param name="url"></param>
/// <param name="info"></param>
/// <param name="sessionID"></param>
/// <returns></returns>
public string GetModdedTraderData(string url, EmptyRequestData info, string sessionID)
{
return _httpResponseUtil.NoBody(_traderConfig.ModdedTraders);
}
}