Files
SPT-Server-Build/Core/Callbacks/TraderCallbacks.cs
T
CWX bb887b0901 Lots of new things (#40)
* callbacks

* controllers

* Router override

* make requests use interface

* create Routers

* extra parts
2025-01-12 15:35:32 +00:00

101 lines
3.1 KiB
C#

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(InjectableTypeOverride = typeof(OnLoad), TypePriority = OnLoadOrder.TraderCallbacks)]
[Injectable(InjectableTypeOverride = typeof(OnUpdate), TypePriority = OnUpdateOrder.TraderCallbacks)]
[Injectable(InjectableTypeOverride = typeof(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<bool> OnUpdate(long _)
{
return _traderController.Update();
}
public string GetRoute()
{
return "spt-traders";
}
/// <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)
{
var traderConfig = _configServer.GetConfig<TraderConfig>(ConfigTypes.TRADER);
return _httpResponseUtil.NoBody(traderConfig.ModdedTraders);
}
}