diff --git a/Core/Callbacks/BotCallbacks.cs b/Core/Callbacks/BotCallbacks.cs index e6112219..c99a47fd 100644 --- a/Core/Callbacks/BotCallbacks.cs +++ b/Core/Callbacks/BotCallbacks.cs @@ -10,7 +10,7 @@ using Core.Utils; namespace Core.Callbacks; -[Injectable] +[Injectable(InjectableTypeOverride = typeof(BotCallbacks))] public class BotCallbacks { protected BotController _botController; diff --git a/Core/Callbacks/BundleCallbacks.cs b/Core/Callbacks/BundleCallbacks.cs index 10b6c964..bb1ef5e0 100644 --- a/Core/Callbacks/BundleCallbacks.cs +++ b/Core/Callbacks/BundleCallbacks.cs @@ -1,4 +1,5 @@ using Core.Annotations; +using Core.Models.Eft.Common; using Core.Models.Enums; using Core.Models.Spt.Config; using Core.Servers; @@ -6,7 +7,7 @@ using Core.Utils; namespace Core.Callbacks; -[Injectable] +[Injectable(InjectableTypeOverride = typeof(BundleCallbacks))] public class BundleCallbacks { protected HttpResponseUtil _httpResponseUtil; @@ -34,10 +35,10 @@ public class BundleCallbacks /// /// /// - public string GetBundles(string url, object info, string sessionID) + public string GetBundles(string url, EmptyRequestData info, string sessionID) { // return _httpResponseUtil.NoBody(_bundleLoader.GetBundles()); - throw new NotImplementedException(); + return _httpResponseUtil.NoBody(new List()); } public string GetBundle(string url, object info, string sessionID) diff --git a/Core/Callbacks/CustomizationCallbacks.cs b/Core/Callbacks/CustomizationCallbacks.cs index 411e77af..251d21bc 100644 --- a/Core/Callbacks/CustomizationCallbacks.cs +++ b/Core/Callbacks/CustomizationCallbacks.cs @@ -82,7 +82,7 @@ public class CustomizationCallbacks /// /// /// - public string GetHideoutCustomisation(PmcData pmcData, EmptyRequestData info, string sessionID) + public string GetHideoutCustomisation(string url, EmptyRequestData info, string sessionID) { return _httpResponseUtil.GetBody(_customizationController.GetHideoutCustomisation(sessionID, info)); } diff --git a/Core/Callbacks/DataCallbacks.cs b/Core/Callbacks/DataCallbacks.cs index ecb32aca..d641c0cb 100644 --- a/Core/Callbacks/DataCallbacks.cs +++ b/Core/Callbacks/DataCallbacks.cs @@ -12,7 +12,7 @@ using Core.Utils; namespace Core.Callbacks; -[Injectable] +[Injectable(InjectableTypeOverride = typeof(DataCallbacks))] public class DataCallbacks { protected HttpResponseUtil _httpResponseUtil; diff --git a/Core/Callbacks/GameCallbacks.cs b/Core/Callbacks/GameCallbacks.cs index 2a7aaf3c..c5a5a8e6 100644 --- a/Core/Callbacks/GameCallbacks.cs +++ b/Core/Callbacks/GameCallbacks.cs @@ -11,6 +11,7 @@ using Core.Utils; namespace Core.Callbacks; [Injectable(InjectableTypeOverride = typeof(OnLoad), TypePriority = OnLoadOrder.GameCallbacks)] +[Injectable(InjectableTypeOverride = typeof(GameCallbacks))] public class GameCallbacks : OnLoad { protected HttpResponseUtil _httpResponseUtil; @@ -214,7 +215,7 @@ public class GameCallbacks : OnLoad /// /// /// - public string GetSurveyView(string url, object info, string sessionID) + public string GetSurveyView(string url, SendSurveyOpinionRequest info, string sessionID) { return _httpResponseUtil.NullResponse(); } diff --git a/Core/Callbacks/MatchCallbacks.cs b/Core/Callbacks/MatchCallbacks.cs index 03c7ebf6..d056aa1f 100644 --- a/Core/Callbacks/MatchCallbacks.cs +++ b/Core/Callbacks/MatchCallbacks.cs @@ -38,7 +38,7 @@ public class MatchCallbacks /// /// /// - public string UpdatePing(string url, EmptyRequestData info, string sessionID) + public string UpdatePing(string url, UpdatePingRequestData info, string sessionID) { return _httpResponseUtil.NullResponse(); } @@ -230,7 +230,7 @@ public class MatchCallbacks /// /// /// - public string GetMetrics(string url, object info, string sessionID) + public string GetMetrics(string url, EmptyRequestData info, string sessionID) { return _httpResponseUtil.GetBody(_databaseService.GetMatch().Metrics); } diff --git a/Core/Callbacks/NotifierCallbacks.cs b/Core/Callbacks/NotifierCallbacks.cs index b70ffc3d..907cdd66 100644 --- a/Core/Callbacks/NotifierCallbacks.cs +++ b/Core/Callbacks/NotifierCallbacks.cs @@ -9,7 +9,7 @@ using Core.Utils; namespace Core.Callbacks; -[Injectable] +[Injectable(InjectableTypeOverride = typeof(NotifierCallbacks))] public class NotifierCallbacks { protected HttpResponseUtil _httpResponseUtil; diff --git a/Core/Callbacks/TraderCallbacks.cs b/Core/Callbacks/TraderCallbacks.cs index bedf48e4..11f443db 100644 --- a/Core/Callbacks/TraderCallbacks.cs +++ b/Core/Callbacks/TraderCallbacks.cs @@ -13,6 +13,7 @@ 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; diff --git a/Core/Controllers/GameController.cs b/Core/Controllers/GameController.cs index 59d81ebc..dcea81eb 100644 --- a/Core/Controllers/GameController.cs +++ b/Core/Controllers/GameController.cs @@ -2,12 +2,21 @@ using Core.Annotations; using Core.Models.Eft.Common; using Core.Models.Eft.Game; using Core.Models.Eft.Profile; +using ILogger = Core.Models.Utils.ILogger; namespace Core.Controllers; [Injectable] public class GameController { + protected ILogger _logger; + + + public GameController() + { + + } + /// /// Handle client/game/start /// @@ -54,7 +63,11 @@ public class GameController string sessionId, GameModeRequestData requestData) { - throw new NotImplementedException(); + return new() + { + GameMode = "pve", + BackendUrl = "127.0.0.1:6969" + }; } /// diff --git a/Core/Controllers/InRaidController.cs b/Core/Controllers/InRaidController.cs index 5c811274..758679b9 100644 --- a/Core/Controllers/InRaidController.cs +++ b/Core/Controllers/InRaidController.cs @@ -100,6 +100,6 @@ public class InRaidController string url, string sessionId) { - throw new NotImplementedException(); + return _botConfig.AssaultToBossConversion.BossesToConvertToWeights.Keys.ToList(); } } diff --git a/Core/DI/Router.cs b/Core/DI/Router.cs index 1865fdf8..3608fd4b 100644 --- a/Core/DI/Router.cs +++ b/Core/DI/Router.cs @@ -11,7 +11,7 @@ public abstract class Router { protected List handledRoutes = []; - public string GetTopLevelRoute() + public virtual string GetTopLevelRoute() { return "spt"; } diff --git a/Core/Models/Eft/Bot/GenerateBotsRequestData.cs b/Core/Models/Eft/Bot/GenerateBotsRequestData.cs index a27facff..ab5946a9 100644 --- a/Core/Models/Eft/Bot/GenerateBotsRequestData.cs +++ b/Core/Models/Eft/Bot/GenerateBotsRequestData.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Bot; -public class GenerateBotsRequestData +public class GenerateBotsRequestData : IRequestData { [JsonPropertyName("conditions")] public List? Conditions { get; set; } @@ -21,4 +22,4 @@ public class Condition [JsonPropertyName("Difficulty")] public string? Difficulty { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Builds/SetMagazineRequest.cs b/Core/Models/Eft/Builds/SetMagazineRequest.cs index 491d62b7..0c3c836a 100644 --- a/Core/Models/Eft/Builds/SetMagazineRequest.cs +++ b/Core/Models/Eft/Builds/SetMagazineRequest.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; using Core.Models.Eft.Profile; +using Core.Models.Utils; namespace Core.Models.Eft.Builds; -public class SetMagazineRequest +public class SetMagazineRequest : IRequestData { [JsonPropertyName("Id")] public string? Id { get; set; } @@ -22,4 +23,4 @@ public class SetMagazineRequest [JsonPropertyName("BottomCount")] public int? BottomCount { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Common/Request/UIDRequestData.cs b/Core/Models/Eft/Common/Request/UIDRequestData.cs index a3acd166..6d4030a7 100644 --- a/Core/Models/Eft/Common/Request/UIDRequestData.cs +++ b/Core/Models/Eft/Common/Request/UIDRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Common.Request; -public class UIDRequestData +public class UIDRequestData : IRequestData { [JsonPropertyName("uid")] public string? Uid { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/AcceptFriendRequestData.cs b/Core/Models/Eft/Dialog/AcceptFriendRequestData.cs index 5cd4b141..5fe145cf 100644 --- a/Core/Models/Eft/Dialog/AcceptFriendRequestData.cs +++ b/Core/Models/Eft/Dialog/AcceptFriendRequestData.cs @@ -1,4 +1,5 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; @@ -14,8 +15,8 @@ public class DeclineFriendRequestData : BaseFriendRequest { } -public class BaseFriendRequest +public class BaseFriendRequest : IRequestData { [JsonPropertyName("profileId")] public string? ProfileId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/AddUserGroupMailRequest.cs b/Core/Models/Eft/Dialog/AddUserGroupMailRequest.cs index 4b9d1b8a..1f58f93f 100644 --- a/Core/Models/Eft/Dialog/AddUserGroupMailRequest.cs +++ b/Core/Models/Eft/Dialog/AddUserGroupMailRequest.cs @@ -1,12 +1,13 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class AddUserGroupMailRequest +public class AddUserGroupMailRequest : IRequestData { [JsonPropertyName("dialogId")] public string? DialogId { get; set; } [JsonPropertyName("uid")] public string? Uid { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/ChangeGroupMailOwnerRequest.cs b/Core/Models/Eft/Dialog/ChangeGroupMailOwnerRequest.cs index 281b7281..a6625404 100644 --- a/Core/Models/Eft/Dialog/ChangeGroupMailOwnerRequest.cs +++ b/Core/Models/Eft/Dialog/ChangeGroupMailOwnerRequest.cs @@ -1,12 +1,13 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class ChangeGroupMailOwnerRequest +public class ChangeGroupMailOwnerRequest : IRequestData { [JsonPropertyName("dialogId")] public string? DialogId { get; set; } [JsonPropertyName("uid")] public string? Uid { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/ClearMailMessageRequest.cs b/Core/Models/Eft/Dialog/ClearMailMessageRequest.cs index 69c84414..e1fee7c1 100644 --- a/Core/Models/Eft/Dialog/ClearMailMessageRequest.cs +++ b/Core/Models/Eft/Dialog/ClearMailMessageRequest.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class ClearMailMessageRequest +public class ClearMailMessageRequest : IRequestData { [JsonPropertyName("dialogId")] public string? DialogId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/CreateGroupMailRequest.cs b/Core/Models/Eft/Dialog/CreateGroupMailRequest.cs index c012819b..ad4b8cf5 100644 --- a/Core/Models/Eft/Dialog/CreateGroupMailRequest.cs +++ b/Core/Models/Eft/Dialog/CreateGroupMailRequest.cs @@ -1,12 +1,13 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class CreateGroupMailRequest +public class CreateGroupMailRequest : IRequestData { [JsonPropertyName("Name")] public string? Name { get; set; } [JsonPropertyName("Users")] public List? Users { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/DeleteFriendRequest.cs b/Core/Models/Eft/Dialog/DeleteFriendRequest.cs index 73628f79..841d006e 100644 --- a/Core/Models/Eft/Dialog/DeleteFriendRequest.cs +++ b/Core/Models/Eft/Dialog/DeleteFriendRequest.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class DeleteFriendRequest +public class DeleteFriendRequest : IRequestData { [JsonPropertyName("friend_id")] public string? FriendId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/FriendRequestData.cs b/Core/Models/Eft/Dialog/FriendRequestData.cs index 8690f0f5..fea8ad4e 100644 --- a/Core/Models/Eft/Dialog/FriendRequestData.cs +++ b/Core/Models/Eft/Dialog/FriendRequestData.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class FriendRequestData +public class FriendRequestData : IRequestData { [JsonPropertyName("status")] public int? Status { get; set; } @@ -12,4 +13,4 @@ public class FriendRequestData [JsonPropertyName("retryAfter")] public int? RetryAfter { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/GetAllAttachmentsRequestData.cs b/Core/Models/Eft/Dialog/GetAllAttachmentsRequestData.cs index 49db448c..3ba62fdf 100644 --- a/Core/Models/Eft/Dialog/GetAllAttachmentsRequestData.cs +++ b/Core/Models/Eft/Dialog/GetAllAttachmentsRequestData.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class GetAllAttachmentsRequestData +public class GetAllAttachmentsRequestData : IRequestData { [JsonPropertyName("dialogId")] public string DialogId { get; set; } diff --git a/Core/Models/Eft/Dialog/GetChatServerListRequestData.cs b/Core/Models/Eft/Dialog/GetChatServerListRequestData.cs index 5664a516..1e8ac4ed 100644 --- a/Core/Models/Eft/Dialog/GetChatServerListRequestData.cs +++ b/Core/Models/Eft/Dialog/GetChatServerListRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class GetChatServerListRequestData +public class GetChatServerListRequestData : IRequestData { [JsonPropertyName("VersionId")] public string? VersionId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/GetMailDialogInfoRequestData.cs b/Core/Models/Eft/Dialog/GetMailDialogInfoRequestData.cs index 8aca17e2..92f275d3 100644 --- a/Core/Models/Eft/Dialog/GetMailDialogInfoRequestData.cs +++ b/Core/Models/Eft/Dialog/GetMailDialogInfoRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class GetMailDialogInfoRequestData +public class GetMailDialogInfoRequestData : IRequestData { [JsonPropertyName("dialogId")] public string? DialogId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/GetMailDialogListRequestData.cs b/Core/Models/Eft/Dialog/GetMailDialogListRequestData.cs index 19fcd49b..94309af8 100644 --- a/Core/Models/Eft/Dialog/GetMailDialogListRequestData.cs +++ b/Core/Models/Eft/Dialog/GetMailDialogListRequestData.cs @@ -1,12 +1,13 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class GetMailDialogListRequestData +public class GetMailDialogListRequestData : IRequestData { [JsonPropertyName("limit")] public int? Limit { get; set; } [JsonPropertyName("offset")] public int? Offset { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/GetMailDialogViewRequestData.cs b/Core/Models/Eft/Dialog/GetMailDialogViewRequestData.cs index 8de5c422..4d265587 100644 --- a/Core/Models/Eft/Dialog/GetMailDialogViewRequestData.cs +++ b/Core/Models/Eft/Dialog/GetMailDialogViewRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; using Core.Models.Enums; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class GetMailDialogViewRequestData +public class GetMailDialogViewRequestData : IRequestData { [JsonPropertyName("type")] public MessageType? Type { get; set; } @@ -16,4 +17,4 @@ public class GetMailDialogViewRequestData [JsonPropertyName("time")] public decimal? Time { get; set; } // decimal -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/PinDialogRequestData.cs b/Core/Models/Eft/Dialog/PinDialogRequestData.cs index d98657da..49a1c81b 100644 --- a/Core/Models/Eft/Dialog/PinDialogRequestData.cs +++ b/Core/Models/Eft/Dialog/PinDialogRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class PinDialogRequestData +public class PinDialogRequestData : IRequestData { [JsonPropertyName("dialogId")] public string? DialogId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/RemoveDialogRequestData.cs b/Core/Models/Eft/Dialog/RemoveDialogRequestData.cs index 08c05ec2..b7ccccb4 100644 --- a/Core/Models/Eft/Dialog/RemoveDialogRequestData.cs +++ b/Core/Models/Eft/Dialog/RemoveDialogRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class RemoveDialogRequestData +public class RemoveDialogRequestData : IRequestData { [JsonPropertyName("dialogId")] public string? DialogId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/RemoveMailMessageRequest.cs b/Core/Models/Eft/Dialog/RemoveMailMessageRequest.cs index 54d96164..87ac9fd8 100644 --- a/Core/Models/Eft/Dialog/RemoveMailMessageRequest.cs +++ b/Core/Models/Eft/Dialog/RemoveMailMessageRequest.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class RemoveMailMessageRequest +public class RemoveMailMessageRequest : IRequestData { [JsonPropertyName("dialogId")] public string? DialogId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/RemoveUserGroupMailRequest.cs b/Core/Models/Eft/Dialog/RemoveUserGroupMailRequest.cs index f70adf30..9ce86e8b 100644 --- a/Core/Models/Eft/Dialog/RemoveUserGroupMailRequest.cs +++ b/Core/Models/Eft/Dialog/RemoveUserGroupMailRequest.cs @@ -1,12 +1,13 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class RemoveUserGroupMailRequest +public class RemoveUserGroupMailRequest : IRequestData { [JsonPropertyName("dialogId")] public string? DialogId { get; set; } [JsonPropertyName("uid")] public string? Uid { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/SendMessageRequest.cs b/Core/Models/Eft/Dialog/SendMessageRequest.cs index ff445400..a07ebdf8 100644 --- a/Core/Models/Eft/Dialog/SendMessageRequest.cs +++ b/Core/Models/Eft/Dialog/SendMessageRequest.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; using Core.Models.Enums; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class SendMessageRequest +public class SendMessageRequest : IRequestData { [JsonPropertyName("dialogId")] public string? DialogId { get; set; } @@ -16,4 +17,4 @@ public class SendMessageRequest [JsonPropertyName("replyTo")] public string? ReplyTo { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Dialog/SetDialogReadRequestData.cs b/Core/Models/Eft/Dialog/SetDialogReadRequestData.cs index 1498158b..cad2c868 100644 --- a/Core/Models/Eft/Dialog/SetDialogReadRequestData.cs +++ b/Core/Models/Eft/Dialog/SetDialogReadRequestData.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Dialog; -public class SetDialogReadRequestData +public class SetDialogReadRequestData : IRequestData { [JsonPropertyName("dialogId")] public List? Dialogs { get; set; } diff --git a/Core/Models/Eft/Game/GameEmptyCrcRequestData.cs b/Core/Models/Eft/Game/GameEmptyCrcRequestData.cs index 0b16bdcd..91b1f5df 100644 --- a/Core/Models/Eft/Game/GameEmptyCrcRequestData.cs +++ b/Core/Models/Eft/Game/GameEmptyCrcRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Game; -public class GameEmptyCrcRequestData +public class GameEmptyCrcRequestData : IRequestData { [JsonPropertyName("crc")] public int? Crc { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Game/GameModeRequestData.cs b/Core/Models/Eft/Game/GameModeRequestData.cs index 37c9b125..62f0e98a 100644 --- a/Core/Models/Eft/Game/GameModeRequestData.cs +++ b/Core/Models/Eft/Game/GameModeRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Game; -public class GameModeRequestData +public class GameModeRequestData : IRequestData { [JsonPropertyName("sessionMode")] public string? SessionMode { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Game/GameModeResponse.cs b/Core/Models/Eft/Game/GameModeResponse.cs index 281913f9..cd3c21aa 100644 --- a/Core/Models/Eft/Game/GameModeResponse.cs +++ b/Core/Models/Eft/Game/GameModeResponse.cs @@ -11,8 +11,8 @@ public enum SessionMode public class GameModeResponse { [JsonPropertyName("gameMode")] - public SessionMode? GameMode { get; set; } + public string? GameMode { get; set; } [JsonPropertyName("backendUrl")] public string? BackendUrl { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Game/GetRaidTimeRequest.cs b/Core/Models/Eft/Game/GetRaidTimeRequest.cs index 20dfe67a..dcc62534 100644 --- a/Core/Models/Eft/Game/GetRaidTimeRequest.cs +++ b/Core/Models/Eft/Game/GetRaidTimeRequest.cs @@ -1,12 +1,13 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Game; -public class GetRaidTimeRequest +public class GetRaidTimeRequest : IRequestData { [JsonPropertyName("Side")] public string? Side { get; set; } [JsonPropertyName("Location")] public string? Location { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Game/SendSurveyOpinionRequest.cs b/Core/Models/Eft/Game/SendSurveyOpinionRequest.cs index 2684302a..154a624a 100644 --- a/Core/Models/Eft/Game/SendSurveyOpinionRequest.cs +++ b/Core/Models/Eft/Game/SendSurveyOpinionRequest.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Game; -public class SendSurveyOpinionRequest +public class SendSurveyOpinionRequest : IRequestData { [JsonPropertyName("surveyId")] public int? SurveyId { get; set; } @@ -21,4 +22,4 @@ public class SurveyOpinionAnswer [JsonPropertyName("answers")] public object? Answers { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Game/VersionValidateRequestData.cs b/Core/Models/Eft/Game/VersionValidateRequestData.cs index 81aba684..64926054 100644 --- a/Core/Models/Eft/Game/VersionValidateRequestData.cs +++ b/Core/Models/Eft/Game/VersionValidateRequestData.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Game; -public class VersionValidateRequestData +public class VersionValidateRequestData : IRequestData { [JsonPropertyName("version")] public Version? Version { get; set; } @@ -27,4 +28,4 @@ public class Version [JsonPropertyName("taxonomy")] public string? Taxonomy { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/InRaid/RegisterPlayerRequestData.cs b/Core/Models/Eft/InRaid/RegisterPlayerRequestData.cs index 19134729..90b9dcda 100644 --- a/Core/Models/Eft/InRaid/RegisterPlayerRequestData.cs +++ b/Core/Models/Eft/InRaid/RegisterPlayerRequestData.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.InRaid; -public class RegisterPlayerRequestData +public class RegisterPlayerRequestData : IRequestData { [JsonPropertyName("crc")] public int? Crc { get; set; } @@ -12,4 +13,4 @@ public class RegisterPlayerRequestData [JsonPropertyName("variantId")] public int? VariantId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/InRaid/ScavSaveRequestData.cs b/Core/Models/Eft/InRaid/ScavSaveRequestData.cs index db873462..8a23c517 100644 --- a/Core/Models/Eft/InRaid/ScavSaveRequestData.cs +++ b/Core/Models/Eft/InRaid/ScavSaveRequestData.cs @@ -1,7 +1,8 @@ using Core.Models.Eft.Common; +using Core.Models.Utils; namespace Core.Models.Eft.InRaid; -public class ScavSaveRequestData : PostRaidPmcData +public class ScavSaveRequestData : PostRaidPmcData, IRequestData { -} \ No newline at end of file +} diff --git a/Core/Models/Eft/ItemEvent/ItemEventRouterRequest.cs b/Core/Models/Eft/ItemEvent/ItemEventRouterRequest.cs index ad4a91c5..214e0d66 100644 --- a/Core/Models/Eft/ItemEvent/ItemEventRouterRequest.cs +++ b/Core/Models/Eft/ItemEvent/ItemEventRouterRequest.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.ItemEvent; -public class ItemEventRouterRequest +public class ItemEventRouterRequest : IRequestData { [JsonPropertyName("data")] public List? Data { get; set; } @@ -51,4 +52,4 @@ public class Location [JsonPropertyName("isSearched")] public bool? IsSearched { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Location/GetAirdropLootRequest.cs b/Core/Models/Eft/Location/GetAirdropLootRequest.cs index ce809319..db8d8373 100644 --- a/Core/Models/Eft/Location/GetAirdropLootRequest.cs +++ b/Core/Models/Eft/Location/GetAirdropLootRequest.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Location; -public class GetAirdropLootRequest +public class GetAirdropLootRequest : IRequestData { [JsonPropertyName("containerId")] public string? ContainerId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/EndLocalRaidRequestData.cs b/Core/Models/Eft/Match/EndLocalRaidRequestData.cs index a9f128c6..13ae2ed6 100644 --- a/Core/Models/Eft/Match/EndLocalRaidRequestData.cs +++ b/Core/Models/Eft/Match/EndLocalRaidRequestData.cs @@ -2,10 +2,11 @@ using Core.Models.Eft.Common; using Core.Models.Eft.Common.Tables; using Core.Models.Enums; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class EndLocalRaidRequestData +public class EndLocalRaidRequestData : IRequestData { /// /// ID of server player just left @@ -119,4 +120,4 @@ public class TransitProfile [JsonPropertyName("isSolo")] public bool? IsSolo { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/GetRaidConfigurationRequestData.cs b/Core/Models/Eft/Match/GetRaidConfigurationRequestData.cs index 59b7ed41..81d29ddb 100644 --- a/Core/Models/Eft/Match/GetRaidConfigurationRequestData.cs +++ b/Core/Models/Eft/Match/GetRaidConfigurationRequestData.cs @@ -1,12 +1,13 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class GetRaidConfigurationRequestData : RaidSettings +public class GetRaidConfigurationRequestData : RaidSettings, IRequestData { [JsonPropertyName("keyId")] public string? KeyId { get; set; } [JsonPropertyName("MaxGroupCount")] public int? MaxGroupCount { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/MatchGroupInviteSendRequest.cs b/Core/Models/Eft/Match/MatchGroupInviteSendRequest.cs index 3f140263..89f55428 100644 --- a/Core/Models/Eft/Match/MatchGroupInviteSendRequest.cs +++ b/Core/Models/Eft/Match/MatchGroupInviteSendRequest.cs @@ -1,12 +1,13 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class MatchGroupInviteSendRequest +public class MatchGroupInviteSendRequest : IRequestData { [JsonPropertyName("to")] public string? To { get; set; } [JsonPropertyName("inLobby")] public bool? InLobby { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/MatchGroupPlayerRemoveRequest.cs b/Core/Models/Eft/Match/MatchGroupPlayerRemoveRequest.cs index 4bc1eaba..769e04f0 100644 --- a/Core/Models/Eft/Match/MatchGroupPlayerRemoveRequest.cs +++ b/Core/Models/Eft/Match/MatchGroupPlayerRemoveRequest.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class MatchGroupPlayerRemoveRequest +public class MatchGroupPlayerRemoveRequest : IRequestData { [JsonPropertyName("aidToKick")] public string? AidToKick { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/MatchGroupStartGameRequest.cs b/Core/Models/Eft/Match/MatchGroupStartGameRequest.cs index 29d36073..35f2a71b 100644 --- a/Core/Models/Eft/Match/MatchGroupStartGameRequest.cs +++ b/Core/Models/Eft/Match/MatchGroupStartGameRequest.cs @@ -1,12 +1,13 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class MatchGroupStartGameRequest +public class MatchGroupStartGameRequest : IRequestData { [JsonPropertyName("groupId")] public string? GroupId { get; set; } [JsonPropertyName("servers")] public List? Servers { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/MatchGroupStatusRequest.cs b/Core/Models/Eft/Match/MatchGroupStatusRequest.cs index 24432ac0..674c731b 100644 --- a/Core/Models/Eft/Match/MatchGroupStatusRequest.cs +++ b/Core/Models/Eft/Match/MatchGroupStatusRequest.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; using Core.Models.Enums; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class MatchGroupStatusRequest +public class MatchGroupStatusRequest : IRequestData { [JsonPropertyName("location")] public string? Location { get; set; } @@ -22,4 +23,4 @@ public class MatchGroupStatusRequest [JsonPropertyName("spawnPlace")] public string? SpawnPlace { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/MatchGroupTransferRequest.cs b/Core/Models/Eft/Match/MatchGroupTransferRequest.cs index e4656cd0..10c0dd13 100644 --- a/Core/Models/Eft/Match/MatchGroupTransferRequest.cs +++ b/Core/Models/Eft/Match/MatchGroupTransferRequest.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class MatchGroupTransferRequest +public class MatchGroupTransferRequest : IRequestData { [JsonPropertyName("aidToChange")] public string? AidToChange { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/PutMetricsRequestData.cs b/Core/Models/Eft/Match/PutMetricsRequestData.cs index ed0ffc95..4f8f9b0a 100644 --- a/Core/Models/Eft/Match/PutMetricsRequestData.cs +++ b/Core/Models/Eft/Match/PutMetricsRequestData.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class PutMetricsRequestData +public class PutMetricsRequestData : IRequestData { [JsonPropertyName("sid")] public string? SessionId { get; set; } @@ -159,4 +160,4 @@ public class ClientEvents [JsonPropertyName("GameStartedReal")] public double? GameStartedReal { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/RequestIdRequest.cs b/Core/Models/Eft/Match/RequestIdRequest.cs index 705870bd..d844e274 100644 --- a/Core/Models/Eft/Match/RequestIdRequest.cs +++ b/Core/Models/Eft/Match/RequestIdRequest.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class RequestIdRequest +public class RequestIdRequest : IRequestData { [JsonPropertyName("requestId")] public string? RequestId { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/StartLocalRaidRequestData.cs b/Core/Models/Eft/Match/StartLocalRaidRequestData.cs index b1e7f539..c9b1c3c2 100644 --- a/Core/Models/Eft/Match/StartLocalRaidRequestData.cs +++ b/Core/Models/Eft/Match/StartLocalRaidRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; using Core.Models.Enums; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class StartLocalRaidRequestData +public class StartLocalRaidRequestData : IRequestData { [JsonPropertyName("serverId")] public string? ServerId { get; set; } @@ -29,4 +30,4 @@ public class StartLocalRaidRequestData /** Should loot generation be skipped, default false */ [JsonPropertyName("sptSkipLootGeneration")] public bool? ShouldSkipLootGeneration { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Match/UpdatePingRequestData.cs b/Core/Models/Eft/Match/UpdatePingRequestData.cs index 26256f83..4504afe5 100644 --- a/Core/Models/Eft/Match/UpdatePingRequestData.cs +++ b/Core/Models/Eft/Match/UpdatePingRequestData.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Match; -public class UpdatePingRequestData +public class UpdatePingRequestData : IRequestData { [JsonPropertyName("servers")] public List? servers { get; set; } diff --git a/Core/Models/Eft/PresetBuild/PresetBuildActionRequestData.cs b/Core/Models/Eft/PresetBuild/PresetBuildActionRequestData.cs index fd6ab042..18dc7720 100644 --- a/Core/Models/Eft/PresetBuild/PresetBuildActionRequestData.cs +++ b/Core/Models/Eft/PresetBuild/PresetBuildActionRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; using Core.Models.Eft.Common.Tables; +using Core.Models.Utils; namespace Core.Models.Eft.PresetBuild; -public class PresetBuildActionRequestData +public class PresetBuildActionRequestData : IRequestData { [JsonPropertyName("Action")] public string? Action { get; set; } @@ -20,4 +21,4 @@ public class PresetBuildActionRequestData [JsonPropertyName("Items")] public List? Items { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/PresetBuild/RemoveBuildRequestData.cs b/Core/Models/Eft/PresetBuild/RemoveBuildRequestData.cs index 58413a85..4d0c7542 100644 --- a/Core/Models/Eft/PresetBuild/RemoveBuildRequestData.cs +++ b/Core/Models/Eft/PresetBuild/RemoveBuildRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.PresetBuild; -public class RemoveBuildRequestData +public class RemoveBuildRequestData : IRequestData { [JsonPropertyName("id")] public string? Id { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Eft/Quests/ListQuestsRequestData.cs b/Core/Models/Eft/Quests/ListQuestsRequestData.cs index 3f846c32..ebec6042 100644 --- a/Core/Models/Eft/Quests/ListQuestsRequestData.cs +++ b/Core/Models/Eft/Quests/ListQuestsRequestData.cs @@ -1,9 +1,10 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Eft.Quests; -public class ListQuestsRequestData +public class ListQuestsRequestData : IRequestData { [JsonPropertyName("completed")] public bool? Completed { get; set; } -} \ No newline at end of file +} diff --git a/Core/Models/Spt/Logging/ClientLogRequest.cs b/Core/Models/Spt/Logging/ClientLogRequest.cs index 4f8fdb65..0d54edc3 100644 --- a/Core/Models/Spt/Logging/ClientLogRequest.cs +++ b/Core/Models/Spt/Logging/ClientLogRequest.cs @@ -1,8 +1,9 @@ using System.Text.Json.Serialization; +using Core.Models.Utils; namespace Core.Models.Spt.Logging; -public class ClientLogRequest +public class ClientLogRequest : IRequestData { [JsonPropertyName("Source")] public string? Source { get; set; } @@ -18,4 +19,4 @@ public class ClientLogRequest [JsonPropertyName("BackgroundColor")] public string? BackgroundColor { get; set; } -} \ No newline at end of file +} diff --git a/Core/Routers/Dynamic/BotDynamicRouter.cs b/Core/Routers/Dynamic/BotDynamicRouter.cs new file mode 100644 index 00000000..4e4f9650 --- /dev/null +++ b/Core/Routers/Dynamic/BotDynamicRouter.cs @@ -0,0 +1,65 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Dynamic; + +[Injectable(InjectableTypeOverride = typeof(DynamicRouter))] +public class BotDynamicRouter : DynamicRouter +{ + protected static BotCallbacks _botCallbacks; + + public BotDynamicRouter( + JsonUtil jsonUtil, + BotCallbacks botCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/singleplayer/settings/bot/limit/", + ( + url, + info, + sessionID, + output + ) => _botCallbacks.GetBotLimit(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/singleplayer/settings/bot/difficulty/", + ( + url, + info, + sessionID, + output + ) => _botCallbacks.GetBotDifficulty(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/singleplayer/settings/bot/difficulties", + ( + url, + info, + sessionID, + output + ) => _botCallbacks.GetAllBotDifficulties(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/singleplayer/settings/bot/maxCap", + ( + url, + info, + sessionID, + output + ) => _botCallbacks.GetBotCap(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/singleplayer/settings/bot/getBotBehaviours/", + ( + url, + info, + sessionID, + output + ) => _botCallbacks.GetBotBehaviours()) + ] + ) + { + _botCallbacks = botCallbacks; + } +} diff --git a/Core/Routers/Dynamic/BundleDynamicRouter.cs b/Core/Routers/Dynamic/BundleDynamicRouter.cs new file mode 100644 index 00000000..ae8a6ebe --- /dev/null +++ b/Core/Routers/Dynamic/BundleDynamicRouter.cs @@ -0,0 +1,33 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Dynamic; + +[Injectable(InjectableTypeOverride = typeof(DynamicRouter))] +public class BundleDynamicRouter : DynamicRouter +{ + protected static BundleCallbacks _bundleCallbacks; + + public BundleDynamicRouter( + JsonUtil jsonUtil, + BundleCallbacks bundleCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/files/bundle", + ( + url, + info, + sessionID, + output + ) => _bundleCallbacks.GetBundle(url, info as EmptyRequestData, sessionID)) + ] + ) + { + _bundleCallbacks = bundleCallbacks; + } +} diff --git a/Core/Routers/Dynamic/CustomizationDynamicRouter.cs b/Core/Routers/Dynamic/CustomizationDynamicRouter.cs new file mode 100644 index 00000000..cd91d78b --- /dev/null +++ b/Core/Routers/Dynamic/CustomizationDynamicRouter.cs @@ -0,0 +1,33 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Dynamic; + +[Injectable(InjectableTypeOverride = typeof(DynamicRouter))] +public class CustomizationDynamicRouter : DynamicRouter +{ + protected static CustomizationCallbacks _customizationCallbacks; + + public CustomizationDynamicRouter( + JsonUtil jsonUtil, + CustomizationCallbacks customizationCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "", + ( + url, + info, + sessionID, + output + ) => _customizationCallbacks.GetTraderSuits(url, info as EmptyRequestData, sessionID)) + ] + ) + { + _customizationCallbacks = customizationCallbacks; + } +} diff --git a/Core/Routers/Dynamic/DataDynamicRouter.cs b/Core/Routers/Dynamic/DataDynamicRouter.cs new file mode 100644 index 00000000..9e10f619 --- /dev/null +++ b/Core/Routers/Dynamic/DataDynamicRouter.cs @@ -0,0 +1,49 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Dynamic; + +[Injectable(InjectableTypeOverride = typeof(DynamicRouter))] +public class DataDynamicRouter : DynamicRouter +{ + protected static DataCallbacks _dataCallbacks; + + public DataDynamicRouter( + JsonUtil jsonUtil, + DataCallbacks dataCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/menu/locale/", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetLocalesMenu(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/locale/", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetLocalesGlobal(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/items/prices/", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetItemPrices(url, info as EmptyRequestData, sessionID)), + ] + ) + { + _dataCallbacks = dataCallbacks; + } +} diff --git a/Core/Routers/Dynamic/InraidDynamicRouter.cs b/Core/Routers/Dynamic/InraidDynamicRouter.cs new file mode 100644 index 00000000..a8957640 --- /dev/null +++ b/Core/Routers/Dynamic/InraidDynamicRouter.cs @@ -0,0 +1,39 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.InRaid; +using Core.Utils; + +namespace Core.Routers.Dynamic; + +[Injectable(InjectableTypeOverride = typeof(DynamicRouter))] +public class InraidDynamicRouter : DynamicRouter +{ + protected static InraidCallbacks _inraidCallbacks; + + public InraidDynamicRouter( + JsonUtil jsonUtil, + InraidCallbacks inraidCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/location/getLocalloot", + ( + url, + info, + sessionID, + output + ) => _inraidCallbacks.RegisterPlayer(url, info as RegisterPlayerRequestData, sessionID), + typeof(RegisterPlayerRequestData)) + ] + ) + { + _inraidCallbacks = inraidCallbacks; + } + + public override string GetTopLevelRoute() + { + return "spt-name"; + } +} diff --git a/Core/Routers/Dynamic/LocationDynamicRouter.cs b/Core/Routers/Dynamic/LocationDynamicRouter.cs new file mode 100644 index 00000000..6459343e --- /dev/null +++ b/Core/Routers/Dynamic/LocationDynamicRouter.cs @@ -0,0 +1,25 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Utils; + +namespace Core.Routers.Dynamic; + +[Injectable(InjectableTypeOverride = typeof(DynamicRouter))] +public class LocationDynamicRouter : DynamicRouter +{ + + public LocationDynamicRouter( + JsonUtil jsonUtil + ) : base( + jsonUtil, + [] + ) + { + } + + public override string GetTopLevelRoute() + { + return "spt-loot"; + } +} diff --git a/Core/Routers/Dynamic/NotifierDynamicRouter.cs b/Core/Routers/Dynamic/NotifierDynamicRouter.cs new file mode 100644 index 00000000..8a2d66ea --- /dev/null +++ b/Core/Routers/Dynamic/NotifierDynamicRouter.cs @@ -0,0 +1,56 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Utils; + +namespace Core.Routers.Dynamic; + +[Injectable(InjectableTypeOverride = typeof(DynamicRouter))] +public class NotifierDynamicRouter : DynamicRouter +{ + protected static NotifierCallbacks _notifierCallbacks; + + public NotifierDynamicRouter( + JsonUtil jsonUtil, + NotifierCallbacks notifierCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/?last_id", + ( + url, + info, + sessionID, + output + ) => _notifierCallbacks.Notify(url, info, sessionID)), + new RouteAction( + "/notifierServer", + ( + url, + info, + sessionID, + output + ) => _notifierCallbacks.Notify(url, info, sessionID)), + new RouteAction( + "/push/notifier/get/", + ( + url, + info, + sessionID, + output + ) => _notifierCallbacks.GetNotifier(url, info, sessionID)), + new RouteAction( + "/push/notifier/getwebsocket/", + ( + url, + info, + sessionID, + output + ) => _notifierCallbacks.GetNotifier(url, info, sessionID)), + ] + ) + { + _notifierCallbacks = notifierCallbacks; + } +} diff --git a/Core/Routers/Dynamic/TraderDynamicRouter.cs b/Core/Routers/Dynamic/TraderDynamicRouter.cs new file mode 100644 index 00000000..b2fe30f1 --- /dev/null +++ b/Core/Routers/Dynamic/TraderDynamicRouter.cs @@ -0,0 +1,41 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Dynamic; + +[Injectable(InjectableTypeOverride = typeof(DynamicRouter))] +public class TraderDynamicRouter : DynamicRouter +{ + protected static TraderCallbacks _traderCallbacks; + + public TraderDynamicRouter( + JsonUtil jsonUtil, + TraderCallbacks traderCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/trading/api/getTrader/", + ( + url, + info, + sessionID, + output + ) => _traderCallbacks.GetTrader(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/trading/api/getTraderAssort/", + ( + url, + info, + sessionID, + output + ) => _traderCallbacks.GetAssort(url, info as EmptyRequestData, sessionID)), + ] + ) + { + _traderCallbacks = traderCallbacks; + } +} diff --git a/Core/Routers/Static/AchievementStaticRouter.cs b/Core/Routers/Static/AchievementStaticRouter.cs new file mode 100644 index 00000000..2f883537 --- /dev/null +++ b/Core/Routers/Static/AchievementStaticRouter.cs @@ -0,0 +1,41 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class AchievementStaticRouter : StaticRouter +{ + protected static AchievementCallbacks _achievementCallbacks; + + public AchievementStaticRouter( + JsonUtil jsonUtil, + AchievementCallbacks achievementCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/achievement/list", + ( + url, + info, + sessionID, + output + ) => _achievementCallbacks.GetAchievements(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/achievement/statistic", + ( + url, + info, + sessionID, + output + ) => _achievementCallbacks.Statistic(url, info as EmptyRequestData, sessionID)), + ] + ) + { + _achievementCallbacks = achievementCallbacks; + } +} diff --git a/Core/Routers/Static/BotStaticRouter.cs b/Core/Routers/Static/BotStaticRouter.cs new file mode 100644 index 00000000..89c681c2 --- /dev/null +++ b/Core/Routers/Static/BotStaticRouter.cs @@ -0,0 +1,34 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Bot; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class BotStaticRouter : StaticRouter +{ + protected static BotCallbacks _botCallbacks; + + public BotStaticRouter( + JsonUtil jsonUtil, + BotCallbacks botCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "", + ( + url, + info, + sessionID, + outout + ) => _botCallbacks.GenerateBots(url, info as GenerateBotsRequestData, sessionID), + typeof(GenerateBotsRequestData)) + ] + ) + { + _botCallbacks = botCallbacks; + } +} diff --git a/Core/Routers/Static/BuildStaticRouter.cs b/Core/Routers/Static/BuildStaticRouter.cs new file mode 100644 index 00000000..250c16a2 --- /dev/null +++ b/Core/Routers/Static/BuildStaticRouter.cs @@ -0,0 +1,70 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Builds; +using Core.Models.Eft.Common; +using Core.Models.Eft.PresetBuild; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class BuildStaticRouter : StaticRouter +{ + protected static BuildsCallbacks _buildsCallbacks; + public BuildStaticRouter( + JsonUtil jsonUtil, + BuildsCallbacks buildsCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/builds/list", + ( + url, + info, + sessionID, + output + ) => _buildsCallbacks.GetBuilds(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/builds/magazine/save", + ( + url, + info, + sessionID, + output + ) => _buildsCallbacks.CreateMagazineTemplate(url, info as SetMagazineRequest, sessionID), + typeof(SetMagazineRequest)), + new RouteAction( + "/client/builds/weapon/save", + ( + url, + info, + sessionID, + output + ) => _buildsCallbacks.SetWeapon(url, info as PresetBuildActionRequestData, sessionID), + typeof(PresetBuildActionRequestData)), + new RouteAction( + "/client/builds/equipment/save", + ( + url, + info, + sessionID, + output + ) => _buildsCallbacks.SetEquipment(url, info as PresetBuildActionRequestData, sessionID), + typeof(PresetBuildActionRequestData)), + new RouteAction( + "/client/builds/delete", + ( + url, + info, + sessionID, + output + ) => _buildsCallbacks.DeleteBuild(url, info as RemoveBuildRequestData, sessionID), + typeof(RemoveBuildRequestData)), + ] + ) + { + _buildsCallbacks = buildsCallbacks; + } +} diff --git a/Core/Routers/Static/BundleStaticRouter.cs b/Core/Routers/Static/BundleStaticRouter.cs new file mode 100644 index 00000000..525ff3b8 --- /dev/null +++ b/Core/Routers/Static/BundleStaticRouter.cs @@ -0,0 +1,33 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class BundleStaticRouter : StaticRouter +{ + protected static BundleCallbacks _bundleCallbacks; + + public BundleStaticRouter( + JsonUtil jsonUtil, + BundleCallbacks bundleCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/singleplayer/bundles", + ( + url, + info, + sessionID, + output + ) => _bundleCallbacks.GetBundles(url, info as EmptyRequestData, sessionID)) + ] + ) + { + _bundleCallbacks = bundleCallbacks; + } +} diff --git a/Core/Routers/Static/ClientLogStaticRouter.cs b/Core/Routers/Static/ClientLogStaticRouter.cs new file mode 100644 index 00000000..9796772b --- /dev/null +++ b/Core/Routers/Static/ClientLogStaticRouter.cs @@ -0,0 +1,50 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Spt.Logging; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class ClientLogStaticRouter : StaticRouter +{ + protected static ClientLogCallbacks _clientLogCallbacks; + + public ClientLogStaticRouter( + JsonUtil jsonUtil, + ClientLogCallbacks clientLogCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/singleplayer/log", + ( + url, + info, + sessionID, + output + ) => _clientLogCallbacks.ClientLog(url, info as ClientLogRequest, sessionID), + typeof(ClientLogRequest)), + new RouteAction( + "/singleplayer/release", + ( + url, + info, + sessionID, + output + ) => _clientLogCallbacks.ReleaseNotes()), + new RouteAction( + "/singleplayer/enableBSGlogging", + ( + url, + info, + sessionID, + output + ) => _clientLogCallbacks.BsgLogging()) + ] + ) + { + _clientLogCallbacks = clientLogCallbacks; + } +} diff --git a/Core/Routers/Static/CustomizationStaticRouter.cs b/Core/Routers/Static/CustomizationStaticRouter.cs new file mode 100644 index 00000000..41163802 --- /dev/null +++ b/Core/Routers/Static/CustomizationStaticRouter.cs @@ -0,0 +1,49 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class CustomizationStaticRouter : StaticRouter +{ + protected static CustomizationCallbacks _customizationCallbacks; + + public CustomizationStaticRouter( + JsonUtil jsonUtil, + CustomizationCallbacks customizationCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/trading/customization/storage", + ( + url, + info, + sessionID, + output + ) => _customizationCallbacks.GetSuits(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/hideout/customization/offer/list", + ( + url, + info, + sessionID, + output + ) => _customizationCallbacks.GetHideoutCustomisation(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/customization/storage", + ( + url, + info, + sessionID, + output + ) => _customizationCallbacks.GetStorage(url, info as EmptyRequestData, sessionID)), + ] + ) + { + _customizationCallbacks = customizationCallbacks; + } +} diff --git a/Core/Routers/Static/DataStaticRouter.cs b/Core/Routers/Static/DataStaticRouter.cs new file mode 100644 index 00000000..c277d5be --- /dev/null +++ b/Core/Routers/Static/DataStaticRouter.cs @@ -0,0 +1,112 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class DataStaticRouter : StaticRouter +{ + protected static DataCallbacks _dataCallbacks; + + public DataStaticRouter( + JsonUtil jsonUtil, + DataCallbacks dataCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/settings", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetSettings(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/globals", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetGlobals(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/items", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetTemplateItems(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/handbook/templates", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetTemplateHandbook(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/customization", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetTemplateSuits(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/account/customization", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetTemplateCharacter(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/hideout/production/recipes", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetHideoutProduction(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/hideout/settings", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetHideoutSettings(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/hideout/areas", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetHideoutAreas(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/languages", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetLocalesLanguages(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/hideout/qte/list", + ( + url, + info, + sessionID, + output + ) => _dataCallbacks.GetQteList(url, info as EmptyRequestData, sessionID)),] + ) + { + _dataCallbacks = dataCallbacks; + } +} diff --git a/Core/Routers/Static/DialogStaticRouter.cs b/Core/Routers/Static/DialogStaticRouter.cs new file mode 100644 index 00000000..b58493ef --- /dev/null +++ b/Core/Routers/Static/DialogStaticRouter.cs @@ -0,0 +1,266 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.Common.Request; +using Core.Models.Eft.Dialog; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class DialogStaticRouter : StaticRouter +{ + protected static DialogueCallbacks _dialogueCallbacks; + + public DialogStaticRouter( + JsonUtil jsonUtil, + DialogueCallbacks dialogueCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/chatServer/list", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.GetChatServerList(url, info as GetChatServerListRequestData, sessionID), + typeof(GetChatServerListRequestData)), + new RouteAction( + "/client/mail/dialog/list", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.GetMailDialogList(url, info as GetMailDialogListRequestData, sessionID), + typeof(GetMailDialogListRequestData)), + new RouteAction( + "/client/mail/dialog/view", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.GetMailDialogView(url, info as GetMailDialogViewRequestData, sessionID), + typeof(GetMailDialogViewRequestData)), + new RouteAction( + "/client/mail/dialog/info", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.GetMailDialogInfo(url, info as GetMailDialogInfoRequestData, sessionID), + typeof(GetMailDialogInfoRequestData)), + new RouteAction( + "/client/mail/dialog/remove", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.RemoveDialog(url, info as RemoveDialogRequestData, sessionID), + typeof(RemoveDialogRequestData)), + new RouteAction( + "/client/mail/dialog/pin", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.PinDialog(url, info as PinDialogRequestData, sessionID), + typeof(PinDialogRequestData)), + new RouteAction( + "/client/mail/dialog/unpin", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.UnpinDialog(url, info as PinDialogRequestData, sessionID), + typeof(PinDialogRequestData)), + new RouteAction( + "/client/mail/dialog/read", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.SetRead(url, info as SetDialogReadRequestData, sessionID), + typeof(SetDialogReadRequestData)), + new RouteAction( + "/client/mail/dialog/remove", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.RemoveMail(url, info as RemoveMailMessageRequest, sessionID), + typeof(RemoveMailMessageRequest)), + new RouteAction( + "/client/mail/dialog/getAllAttachments", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.GetAllAttachments(url, info as GetAllAttachmentsRequestData, sessionID), + typeof(GetAllAttachmentsRequestData)), + new RouteAction( + "/client/mail/msg/send", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.SendMessage(url, info as SendMessageRequest, sessionID), + typeof(SendMessageRequest)), + new RouteAction( + "client/mail/dialog/clear", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.ClearMail(url, info as ClearMailMessageRequest, sessionID), + typeof(ClearMailMessageRequest)), + new RouteAction( + "/client/mail/dialog/group/create", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.CreateGroupMail(url, info as CreateGroupMailRequest, sessionID), + typeof(CreateGroupMailRequest)), + new RouteAction( + "/client/mail/dialog/group/owner/change", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.ChangeMailGroupOwner(url, info as ChangeGroupMailOwnerRequest, sessionID), + typeof(ChangeGroupMailOwnerRequest)), + new RouteAction( + "/client/mail/dialog/group/users/add", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.AddUserToMail(url, info as AddUserGroupMailRequest, sessionID), + typeof(AddUserGroupMailRequest)), + new RouteAction( + "/client/mail/dialog/group/users/remove", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.RemoveUserFromMail(url, info as RemoveUserGroupMailRequest, sessionID), + typeof(RemoveUserGroupMailRequest)), + new RouteAction( + "/client/friend/list", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.GetFriendList(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/friend/request/list/outbox", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.ListOutbox(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/friend/request/list/inbox", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.ListInbox(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/friend/request/send", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.SendFriendRequest(url, info as FriendRequestData, sessionID), + typeof(FriendRequestData)), + new RouteAction( + "/client/friend/request/accept-all", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.AcceptAllFriendRequests(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/friend/request/accept", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.AcceptFriendRequest(url, info as AcceptFriendRequestData, sessionID), + typeof(AcceptFriendRequestData)), + new RouteAction( + "/client/friend/request/decline", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.DeclineFriendRequest(url, info as DeclineFriendRequestData, sessionID), + typeof(DeclineFriendRequestData)), + new RouteAction( + "/client/friend/request/cancel", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.CancelFriendRequest(url, info as CancelFriendRequestData, sessionID), + typeof(CancelFriendRequestData)), + new RouteAction( + "/client/friend/delete", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.DeleteFriend(url, info as DeleteFriendRequest, sessionID), + typeof(DeleteFriendRequest)), + new RouteAction( + "/client/friend/ignore/set", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.IgnoreFriend(url, info as UIDRequestData, sessionID), + typeof(UIDRequestData)), + new RouteAction( + "", + ( + url, + info, + sessionID, + output + ) => _dialogueCallbacks.UnIgnoreFriend(url, info as UIDRequestData, sessionID), + typeof(UIDRequestData)), + ] + ) + { + _dialogueCallbacks = dialogueCallbacks; + } +} diff --git a/Core/Routers/Static/GameStaticRouter.cs b/Core/Routers/Static/GameStaticRouter.cs new file mode 100644 index 00000000..95f2fb6b --- /dev/null +++ b/Core/Routers/Static/GameStaticRouter.cs @@ -0,0 +1,168 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.Controllers; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.Common.Request; +using Core.Models.Eft.Common.Tables; +using Core.Models.Eft.Game; +using Core.Servers; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class GameStaticRouter : StaticRouter +{ + protected static GameCallbacks _gameCallbacks; + + public GameStaticRouter( + JsonUtil jsonUtil, + GameCallbacks gameCallbacks + ) : base + ( + jsonUtil, + [ + new RouteAction( + "/client/game/config", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GetGameConfig(url, info as GameEmptyCrcRequestData, sessionID), + typeof(GameEmptyCrcRequestData)), + new RouteAction( + "/client/game/mode", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GetGameMode(url, info as GameModeRequestData, sessionID), + typeof(GameModeRequestData)), + new RouteAction( + "/client/server/list", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GetServer(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/group/current", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GetCurrentGroup(url, info as EmptyRequestData, sessionID), + typeof(GameModeRequestData)), + new RouteAction( + "/client/game/version/validate", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.VersionValidate(url, info as VersionValidateRequestData, sessionID), + typeof(VersionValidateRequestData)), + new RouteAction( + "/client/game/start", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GameStart(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/game/logout", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GameLogout(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/checkVersion", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.ValidateGameVersion(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/game/keepalive", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GameKeepalive(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/singleplayer/settings/version", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GetVersion(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/reports/lobby/send", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.ReportNickname(url, info as UIDRequestData, sessionID), + typeof(UIDRequestData)), + new RouteAction( + "/client/report/send", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.ReportNickname(url, info as UIDRequestData, sessionID), + typeof(GameModeRequestData)), + new RouteAction( + "/singleplayer/settings/getRaidTime", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GetRaidTime(url, info as GetRaidTimeRequest, sessionID), + typeof(GetRaidTimeRequest)), + new RouteAction( + "/client/survey", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GetSurvey(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/survey/view", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.GetSurveyView(url, info as SendSurveyOpinionRequest, sessionID), + typeof(SendSurveyOpinionRequest)), + new RouteAction( + "/client/survey/opinion", + ( + url, + info, + sessionID, + output + ) => _gameCallbacks.SendSurveyOpinion(url, info as SendSurveyOpinionRequest, sessionID), + typeof(SendSurveyOpinionRequest)), + ] + ) + { + _gameCallbacks = gameCallbacks; + } +} diff --git a/Core/Routers/Static/HealthStaticRouter.cs b/Core/Routers/Static/HealthStaticRouter.cs new file mode 100644 index 00000000..a48eac3b --- /dev/null +++ b/Core/Routers/Static/HealthStaticRouter.cs @@ -0,0 +1,34 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Health; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class HealthStaticRouter : StaticRouter +{ + protected static HealthCallbacks _healthCallbacks; + + public HealthStaticRouter( + JsonUtil jsonUtil, + HealthCallbacks healthCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/hideout/workout", + ( + url, + info, + sessionID, + output + ) => _healthCallbacks.handleWorkoutEffects(url, info as WorkoutData, sessionID), + typeof(WorkoutData)), + ] + ) + { + _healthCallbacks = healthCallbacks; + } +} diff --git a/Core/Routers/Static/InraidStaticRouter.cs b/Core/Routers/Static/InraidStaticRouter.cs new file mode 100644 index 00000000..a8bce39f --- /dev/null +++ b/Core/Routers/Static/InraidStaticRouter.cs @@ -0,0 +1,53 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.InRaid; +using Core.Utils; +using Microsoft.AspNetCore.Components.Web; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class InraidStaticRouter : StaticRouter +{ + public InraidStaticRouter(InraidCallbacks inraidCallbacks, JsonUtil jsonUtil) : base( + jsonUtil, + [ + new RouteAction( + "/raid/profile/scavsave", + ( + url, + info, + sessionID, + output + ) => inraidCallbacks.SaveProgress(url, info as ScavSaveRequestData, sessionID), + typeof(ScavSaveRequestData)), + new RouteAction( + "/singleplayer/settings/raid/menu", + ( + url, + info, + sessionID, + output + ) => inraidCallbacks.GetRaidMenuSettings()), + new RouteAction( + "/singleplayer/scav/traitorscavhostile", + ( + url, + info, + sessionID, + output + ) => inraidCallbacks.GetTraitorScavHostileChance(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/singleplayer/bossconvert", + ( + url, + info, + sessionID, + output + ) => inraidCallbacks.GetBossConvertSettings(url, info as EmptyRequestData, sessionID)), + ]) + { + } +} diff --git a/Core/Routers/Static/InsuranceStaticRouter.cs b/Core/Routers/Static/InsuranceStaticRouter.cs new file mode 100644 index 00000000..0d97f0fa --- /dev/null +++ b/Core/Routers/Static/InsuranceStaticRouter.cs @@ -0,0 +1,34 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Insurance; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class InsuranceStaticRouter : StaticRouter +{ + protected static InsuranceCallbacks _insuranceCallbacks; + + public InsuranceStaticRouter( + JsonUtil jsonUtil, + InsuranceCallbacks insuranceCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/insurance/items/list/cost", + ( + url, + info, + sessionID, + output + ) => _insuranceCallbacks.GetInsuranceCost(url, info as GetInsuranceCostRequestData, sessionID), + typeof(GetInsuranceCostRequestData)) + ] + ) + { + _insuranceCallbacks = insuranceCallbacks; + } +} diff --git a/Core/Routers/Static/ItemEventStaticRouter.cs b/Core/Routers/Static/ItemEventStaticRouter.cs new file mode 100644 index 00000000..213d5b37 --- /dev/null +++ b/Core/Routers/Static/ItemEventStaticRouter.cs @@ -0,0 +1,34 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.ItemEvent; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class ItemEventStaticRouter : StaticRouter +{ + protected static ItemEventCallbacks _itemEventCallbacks; + + public ItemEventStaticRouter( + JsonUtil jsonUtil, + ItemEventCallbacks itemEventCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/game/profile/items/moving", + ( + url, + info, + sessionID, + output + ) => _itemEventCallbacks.HandleEvents(url, info as ItemEventRouterRequest, sessionID), + typeof(ItemEventRouterRequest)) + ] + ) + { + _itemEventCallbacks = itemEventCallbacks; + } +} diff --git a/Core/Routers/Static/LocationStaticRouter.cs b/Core/Routers/Static/LocationStaticRouter.cs new file mode 100644 index 00000000..424f3b86 --- /dev/null +++ b/Core/Routers/Static/LocationStaticRouter.cs @@ -0,0 +1,43 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.Location; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class LocationStaticRouter : StaticRouter +{ + protected static LocationCallbacks _locationCallbacks; + + public LocationStaticRouter( + JsonUtil jsonUtil, + LocationCallbacks locationCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/locations", + ( + url, + info, + sessionID, + output + ) => _locationCallbacks.GetLocationData(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/airdrop/loot", + ( + url, + info, + sessionID, + output + ) => _locationCallbacks.GetAirdropLoot(url, info as GetAirdropLootRequest, sessionID), + typeof(GetAirdropLootRequest)) + ] + ) + { + _locationCallbacks = locationCallbacks; + } +} diff --git a/Core/Routers/Static/MatchStaticRouter.cs b/Core/Routers/Static/MatchStaticRouter.cs new file mode 100644 index 00000000..eed1b082 --- /dev/null +++ b/Core/Routers/Static/MatchStaticRouter.cs @@ -0,0 +1,266 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.Match; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class MatchStaticRouter : StaticRouter +{ + protected static MatchCallbacks _matchCallbacks; + + public MatchStaticRouter( + JsonUtil jsonUtil, + MatchCallbacks matchCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/match/available", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.ServerAvailable(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/updatePing", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.UpdatePing(url, info as UpdatePingRequestData, sessionID), + typeof(UpdatePingRequestData)), + new RouteAction( + "/client/match/join", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.JoinMatch(url, info as MatchGroupStartGameRequest, sessionID), + typeof(MatchGroupStartGameRequest)), + new RouteAction( + "/client/match/exit", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.ExitMatch(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/group/delete", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.DeleteGroup(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/group/leave", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.LeaveGroup(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/group/status", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.GetGroupStatus(url, info as MatchGroupStatusRequest, sessionID), + typeof(MatchGroupStatusRequest)), + new RouteAction( + "/client/match/group/start_game", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.JoinMatch(url, info as MatchGroupStartGameRequest, sessionID), + typeof(MatchGroupStartGameRequest)), + new RouteAction( + "/client/match/group/exit_from_menu", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.ExitFromMenu(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/group/current", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.GroupCurrent(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/group/looking/start", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.StartGroupSearch(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/group/looking/stop", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.StopGroupSearch(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/group/invite/send", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.SendGroupInvite(url, info as MatchGroupInviteSendRequest, sessionID), + typeof(MatchGroupInviteSendRequest)), + new RouteAction( + "/client/match/group/invite/accept", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.AcceptGroupInvite(url, info as RequestIdRequest, sessionID), + typeof(RequestIdRequest)), + new RouteAction( + "/client/match/group/invite/decline", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.DeclineGroupInvite(url, info as RequestIdRequest, sessionID), + typeof(RequestIdRequest)), + new RouteAction( + "/client/match/group/invite/cancel", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.CancelGroupInvite(url, info as RequestIdRequest, sessionID), + typeof(RequestIdRequest)), + new RouteAction( + "/client/match/group/invite/cancel-all", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.CancelAllGroupInvite(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/group/transfer", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.TransferGroup(url, info as MatchGroupTransferRequest, sessionID), + typeof(MatchGroupTransferRequest)), + new RouteAction( + "/client/match/group/raid/ready", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.RaidReady(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/match/group/raid/not-ready", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.NotRaidReady(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/putMetrics", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.PutMetrics(url, info as PutMetricsRequestData, sessionID), + typeof(PutMetricsRequestData)), + new RouteAction( + "/client/analytics/event-disconnect", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.EventDisconnect(url, info as PutMetricsRequestData, sessionID), + typeof(PutMetricsRequestData)), + new RouteAction( + "/client/getMetricsConfig", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.GetMetrics(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/raid/configuration", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.GetRaidConfiguration(url, info as GetRaidConfigurationRequestData, sessionID), + typeof(GetRaidConfigurationRequestData)), + new RouteAction( + "/client/raid/configuration-by-profile", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.GetConfigurationByProfile(url, info as GetRaidConfigurationRequestData, sessionID), + typeof(GetRaidConfigurationRequestData)), + new RouteAction( + "/client/match/group/player/remove", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.RemovePlayerFromGroup(url, info as MatchGroupPlayerRemoveRequest, sessionID), + typeof(MatchGroupPlayerRemoveRequest)), + new RouteAction( + "/client/match/local/start", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.StartLocalRaid(url, info as StartLocalRaidRequestData, sessionID), + typeof(StartLocalRaidRequestData)), + new RouteAction( + "/client/match/local/end", + ( + url, + info, + sessionID, + output + ) => _matchCallbacks.EndLocalRaid(url, info as EndLocalRaidRequestData, sessionID), + typeof(EndLocalRaidRequestData)) + ] + ) + { + _matchCallbacks = matchCallbacks; + } +} diff --git a/Core/Routers/Static/NotifierStaticRouter.cs b/Core/Routers/Static/NotifierStaticRouter.cs new file mode 100644 index 00000000..a560cc3c --- /dev/null +++ b/Core/Routers/Static/NotifierStaticRouter.cs @@ -0,0 +1,43 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.Common.Request; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class NotifierStaticRouter : StaticRouter +{ + protected static NotifierCallbacks _notifierCallbacks; + + public NotifierStaticRouter( + JsonUtil jsonUtil, + NotifierCallbacks notifierCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/notifier/channel/create", + ( + url, + info, + sessionID, + output + ) => _notifierCallbacks.CreateNotifierChannel(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/game/profile/select", + ( + url, + info, + sessionID, + output + ) => _notifierCallbacks.SelectProfile(url, info as UIDRequestData, sessionID), + typeof(UIDRequestData)), + ] + ) + { + _notifierCallbacks = notifierCallbacks; + } +} diff --git a/Core/Routers/Static/PrestigeStaticRouter.cs b/Core/Routers/Static/PrestigeStaticRouter.cs new file mode 100644 index 00000000..796eb39f --- /dev/null +++ b/Core/Routers/Static/PrestigeStaticRouter.cs @@ -0,0 +1,41 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class PrestigeStaticRouter : StaticRouter +{ + protected static PrestigeCallbacks _presetCallbacks; + + public PrestigeStaticRouter( + JsonUtil jsonUtil, + PrestigeCallbacks prestigeCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "/client/prestige/list", + ( + url, + info, + sessionID, + output + ) => _presetCallbacks.GetPrestige(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/client/prestige/obtain", + ( + url, + info, + sessionID, + output + ) => _presetCallbacks.ObtainPrestige(url, info as EmptyRequestData, sessionID)) + ] + ) + { + _presetCallbacks = prestigeCallbacks; + } +} diff --git a/Core/Routers/Static/QuestStaticRouter.cs b/Core/Routers/Static/QuestStaticRouter.cs new file mode 100644 index 00000000..dcbbfc25 --- /dev/null +++ b/Core/Routers/Static/QuestStaticRouter.cs @@ -0,0 +1,42 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Models.Eft.Quests; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class QuestStaticRouter : StaticRouter +{ + protected static QuestCallbacks _questCallbacks; + + public QuestStaticRouter( + JsonUtil jsonUtil, + QuestCallbacks questCallbacks + ) : base( + jsonUtil, + [ + new RouteAction( + "", + ( + url, + info, + sessionID, + output + ) => _questCallbacks.ListQuests(url, info as ListQuestsRequestData, sessionID), + typeof(ListQuestsRequestData)), + new RouteAction( + "", + ( + url, + info, + sessionID, + output + ) => _questCallbacks.ActivityPeriods(url, info as EmptyRequestData, sessionID)),] + ) + { + _questCallbacks = questCallbacks; + } +} diff --git a/Core/Routers/Static/TraderStaticRouter.cs b/Core/Routers/Static/TraderStaticRouter.cs new file mode 100644 index 00000000..b7ce7201 --- /dev/null +++ b/Core/Routers/Static/TraderStaticRouter.cs @@ -0,0 +1,42 @@ +using Core.Annotations; +using Core.Callbacks; +using Core.DI; +using Core.Models.Eft.Common; +using Core.Utils; + +namespace Core.Routers.Static; + +[Injectable(InjectableTypeOverride = typeof(StaticRouter))] +public class TraderStaticRouter : StaticRouter +{ + protected static TraderCallbacks _traderCallbacks; + + public TraderStaticRouter( + JsonUtil jsonUtil, + TraderCallbacks traderCallbacks + ) : base + ( + jsonUtil, + [ + new RouteAction( + "/client/trading/api/traderSettings", + ( + url, + info, + sessionID, + output + ) => _traderCallbacks.GetTraderSettings(url, info as EmptyRequestData, sessionID)), + new RouteAction( + "/singleplayer/moddedTraders", + ( + url, + info, + sessionID, + output + ) => _traderCallbacks.GetModdedTraderData(url, info as EmptyRequestData, sessionID)) + ] + ) + { + _traderCallbacks = traderCallbacks; + } +} diff --git a/Core/Utils/App.cs b/Core/Utils/App.cs index 6c7a3421..5ef4b347 100644 --- a/Core/Utils/App.cs +++ b/Core/Utils/App.cs @@ -80,23 +80,10 @@ public class App _logger.Debug("Commit: ${ProgramStatics.COMMIT}"); } */ - foreach (var onLoad in _onLoad) - { - Console.WriteLine($"Start Onload: {onLoad.GetRoute()}"); + foreach (var onLoad in _onLoad) await onLoad.OnLoad(); - Console.WriteLine($"finish Onload: {onLoad.GetRoute()}"); - } - new Timer(_ => - { - Console.WriteLine($"Start OnUpdate"); - Update(_onUpdate); - Console.WriteLine($"Finish OnUpdate"); - - }, - null, - TimeSpan.Zero, - TimeSpan.FromMilliseconds(5000)); + new Timer(_ => Update(_onUpdate), null, TimeSpan.Zero, TimeSpan.FromMilliseconds(5000)); } protected async Task Update(IEnumerable onUpdateComponents)