diff --git a/Core/Callbacks/CustomizationCallbacks.cs b/Core/Callbacks/CustomizationCallbacks.cs index 533e3369..dab108b8 100644 --- a/Core/Callbacks/CustomizationCallbacks.cs +++ b/Core/Callbacks/CustomizationCallbacks.cs @@ -49,9 +49,9 @@ public class CustomizationCallbacks( /// /// /// - public ItemEventRouterResponse BuyClothing(PmcData pmcData, BuyClothingRequestData info, string sessionID) + public ItemEventRouterResponse BuyCustomisation(PmcData pmcData, BuyClothingRequestData info, string sessionID) { - return _customizationController.BuyClothing(pmcData, info, sessionID); + return _customizationController.BuyCustomisation(pmcData, info, sessionID); } /// diff --git a/Core/Controllers/BotController.cs b/Core/Controllers/BotController.cs index e4d08d80..84d79b1f 100644 --- a/Core/Controllers/BotController.cs +++ b/Core/Controllers/BotController.cs @@ -148,7 +148,7 @@ public class BotController var botNameKey = botType.ToLower(); foreach (var (difficultyName, difficultyValues) in botDetails.BotDifficulty) { - // Bot doesnt exist in result, add + // Bot doesn't exist in result, add if (!result.ContainsKey(botNameKey)) { result.TryAdd(botNameKey, new Dictionary()); diff --git a/Core/Controllers/CustomizationController.cs b/Core/Controllers/CustomizationController.cs index 5a9804ac..5be7be9f 100644 --- a/Core/Controllers/CustomizationController.cs +++ b/Core/Controllers/CustomizationController.cs @@ -77,7 +77,7 @@ public class CustomizationController /// Request object /// Session id /// ItemEventRouterResponse - public ItemEventRouterResponse BuyClothing( + public ItemEventRouterResponse BuyCustomisation( PmcData pmcData, BuyClothingRequestData buyClothingRequest, string sessionId) diff --git a/Core/DI/Router.cs b/Core/DI/Router.cs index 3608fd4b..1facb2b0 100644 --- a/Core/DI/Router.cs +++ b/Core/DI/Router.cs @@ -101,13 +101,11 @@ public abstract class DynamicRouter : Router // So instead I added the definition public abstract class ItemEventRouterDefinition : Router { - public abstract object HandleItemEvent( - string url, + public abstract Task? HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, - ItemEventRouterResponse output - ); + ItemEventRouterResponse output); } public abstract class SaveLoadRouter : Router diff --git a/Core/Models/Utils/ISptLogger.cs b/Core/Models/Utils/ISptLogger.cs index 8f8f6afe..c427755d 100644 --- a/Core/Models/Utils/ISptLogger.cs +++ b/Core/Models/Utils/ISptLogger.cs @@ -1,3 +1,4 @@ +using Core.Models.Eft.ItemEvent; using Core.Models.Logging; namespace Core.Models.Utils; @@ -14,4 +15,5 @@ public interface ISptLogger void Info(string data, Exception? ex = null); void Debug(string data, Exception? ex = null); void Critical(string data, Exception? ex = null); + void WriteToLogFile(object body); } diff --git a/Core/Routers/EventOutputHolder.cs b/Core/Routers/EventOutputHolder.cs index fa0764d1..017efff5 100644 --- a/Core/Routers/EventOutputHolder.cs +++ b/Core/Routers/EventOutputHolder.cs @@ -75,7 +75,7 @@ public class EventOutputHolder }); } - public void UpdateOutputProperties() + public void UpdateOutputProperties(string sessionId) { throw new NotImplementedException(); } diff --git a/Core/Routers/ItemEventRouter.cs b/Core/Routers/ItemEventRouter.cs new file mode 100644 index 00000000..2bbd86be --- /dev/null +++ b/Core/Routers/ItemEventRouter.cs @@ -0,0 +1,75 @@ +using Core.Annotations; +using Core.DI; +using Core.Helpers; +using Core.Models.Eft.HttpResponse; +using Core.Models.Eft.ItemEvent; +using Core.Models.Enums; +using Core.Models.Utils; +using Core.Services; +using Core.Utils; +using Core.Utils.Cloners; +using Microsoft.AspNetCore.Http; + +namespace Core.Routers +{ + [Injectable] + public class ItemEventRouter + { + protected ISptLogger _logger; + private readonly HttpResponseUtil _httpResponseUtil; + protected ProfileHelper _profileHelper; + protected LocalisationService _localisationService; + protected EventOutputHolder _eventOutputHolder; + protected List _itemEventRouters; + protected ICloner _cloner; + + public ItemEventRouter( + ISptLogger logger, + HttpResponseUtil httpResponseUtil, + ProfileHelper profileHelper, + LocalisationService localisationService, + EventOutputHolder eventOutputHolder, + IEnumerable itemEventRouters, + ICloner cloner + ) + { + _logger = logger; + _httpResponseUtil = httpResponseUtil; + _profileHelper = profileHelper; + _localisationService = localisationService; + _eventOutputHolder = eventOutputHolder; + _itemEventRouters = itemEventRouters.ToList(); + _cloner = cloner; + } + + public async Task HandleEvents(ItemEventRouterRequest info, string sessionID) + { + var output = _eventOutputHolder.GetOutput(sessionID); + + foreach (var body in info.Data) { + var pmcData = _profileHelper.GetPmcProfile(sessionID); + + var eventRouter = _itemEventRouters.FirstOrDefault((r) => r.CanHandle(body.Action)); + if (eventRouter is not null) + { + _logger.Debug("event: ${ body.Action}"); + await eventRouter.HandleItemEvent(body.Action, pmcData, body, sessionID, output); + if (output.Warnings.Count > 0) { + break; + } + } else { + _logger.Error(_localisationService.GetText("event-unhandled_event", body.Action)); + _logger.WriteToLogFile(body); + } + } + + _eventOutputHolder.UpdateOutputProperties(sessionID); + + // Clone output before resetting the output object ready for use next time + var outputClone = _cloner.Clone(output); + _eventOutputHolder.ResetOutput(sessionID); + + return outputClone; + } + } +} diff --git a/Core/Routers/ItemEvents/CustomizationItemEventRouter.cs b/Core/Routers/ItemEvents/CustomizationItemEventRouter.cs index fc34cac3..f40d0499 100644 --- a/Core/Routers/ItemEvents/CustomizationItemEventRouter.cs +++ b/Core/Routers/ItemEvents/CustomizationItemEventRouter.cs @@ -1,22 +1,26 @@ -using Core.Annotations; +using Core.Annotations; using Core.Callbacks; using Core.DI; using Core.Models.Eft.Common; using Core.Models.Eft.Customization; using Core.Models.Eft.ItemEvent; +using Core.Models.Utils; namespace Core.Routers.ItemEvents; [Injectable(InjectableTypeOverride = typeof(ItemEventRouterDefinition))] public class CustomizationItemEventRouter : ItemEventRouterDefinition { + protected ISptLogger _logger; protected CustomizationCallbacks _customizationCallbacks; public CustomizationItemEventRouter ( + ISptLogger logger, CustomizationCallbacks customizationCallbacks ) { + _logger = logger; _customizationCallbacks = customizationCallbacks; } @@ -29,14 +33,14 @@ public class CustomizationItemEventRouter : ItemEventRouterDefinition }; } - public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + public override Task HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) { switch (url) { case "CustomizationBuy": - return _customizationCallbacks.BuyClothing(pmcData, body as BuyClothingRequestData, sessionID); + return Task.FromResult(_customizationCallbacks.BuyCustomisation(pmcData, body as BuyClothingRequestData, sessionID)); case "CustomizationSet": - return _customizationCallbacks.SetClothing(pmcData, body as CustomizationSetRequest, sessionID); + return Task.FromResult(_customizationCallbacks.SetClothing(pmcData, body as CustomizationSetRequest, sessionID)); default: throw new Exception($"CustomizationItemEventRouter being used when it cant handle route {url}"); } diff --git a/Core/Routers/ItemEvents/HealthItemEventRouter.cs b/Core/Routers/ItemEvents/HealthItemEventRouter.cs index 1b850eb1..65e0b66d 100644 --- a/Core/Routers/ItemEvents/HealthItemEventRouter.cs +++ b/Core/Routers/ItemEvents/HealthItemEventRouter.cs @@ -1,4 +1,4 @@ -using Core.Annotations; +using Core.Annotations; using Core.Callbacks; using Core.DI; using Core.Models.Eft.Common; @@ -30,16 +30,16 @@ public class HealthItemEventRouter : ItemEventRouterDefinition }; } - public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + public override Task? HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) { switch (url) { case "Eat": - return _healthCallbacks.OffraidEat(pmcData, body as OffraidEatRequestData, sessionID); + return Task.FromResult(_healthCallbacks.OffraidEat(pmcData, body as OffraidEatRequestData, sessionID)); case "Heal": - return _healthCallbacks.OffraidHeal(pmcData, body as OffraidHealRequestData, sessionID); + return Task.FromResult(_healthCallbacks.OffraidHeal(pmcData, body as OffraidHealRequestData, sessionID)); case "RestoreHealth": - return _healthCallbacks.HealthTreatment(pmcData, body as HealthTreatmentRequestData, sessionID); + return Task.FromResult(_healthCallbacks.HealthTreatment(pmcData, body as HealthTreatmentRequestData, sessionID)); default: throw new Exception($"HealthItemEventRouter being used when it cant handle route {url}"); } diff --git a/Core/Routers/ItemEvents/HideoutItemEventRouter.cs b/Core/Routers/ItemEvents/HideoutItemEventRouter.cs index c1103424..32ddfc77 100644 --- a/Core/Routers/ItemEvents/HideoutItemEventRouter.cs +++ b/Core/Routers/ItemEvents/HideoutItemEventRouter.cs @@ -43,41 +43,41 @@ public class HideoutItemEventRouter : ItemEventRouterDefinition }; } - public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + public override Task HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) { switch (url) { case HideoutEventActions.HIDEOUT_UPGRADE: - return _hideoutCallbacks.Upgrade(pmcData, body as HideoutUpgradeRequestData, sessionID, output); + return Task.FromResult(_hideoutCallbacks.Upgrade(pmcData, body as HideoutUpgradeRequestData, sessionID, output)); case HideoutEventActions.HIDEOUT_UPGRADE_COMPLETE: - return _hideoutCallbacks.UpgradeComplete(pmcData, body as HideoutUpgradeCompleteRequestData, sessionID, output); + return Task.FromResult(_hideoutCallbacks.UpgradeComplete(pmcData, body as HideoutUpgradeCompleteRequestData, sessionID, output)); case HideoutEventActions.HIDEOUT_PUT_ITEMS_IN_AREA_SLOTS: - return _hideoutCallbacks.PutItemsInAreaSlots(pmcData, body as HideoutPutItemInRequestData, sessionID); + return Task.FromResult(_hideoutCallbacks.PutItemsInAreaSlots(pmcData, body as HideoutPutItemInRequestData, sessionID)); case HideoutEventActions.HIDEOUT_TAKE_ITEMS_FROM_AREA_SLOTS: - return _hideoutCallbacks.TakeItemsFromAreaSlots(pmcData, body as HideoutTakeItemOutRequestData, sessionID); + return Task.FromResult(_hideoutCallbacks.TakeItemsFromAreaSlots(pmcData, body as HideoutTakeItemOutRequestData, sessionID)); case HideoutEventActions.HIDEOUT_TOGGLE_AREA: - return _hideoutCallbacks.ToggleArea(pmcData, body as HideoutToggleAreaRequestData, sessionID); + return Task.FromResult(_hideoutCallbacks.ToggleArea(pmcData, body as HideoutToggleAreaRequestData, sessionID)); case HideoutEventActions.HIDEOUT_SINGLE_PRODUCTION_START: - return _hideoutCallbacks.SingleProductionStart(pmcData, body as HideoutSingleProductionStartRequestData, sessionID); + return Task.FromResult(_hideoutCallbacks.SingleProductionStart(pmcData, body as HideoutSingleProductionStartRequestData, sessionID)); case HideoutEventActions.HIDEOUT_SCAV_CASE_PRODUCTION_START: - return _hideoutCallbacks.ScavCaseProductionStart(pmcData, body as HideoutScavCaseStartRequestData, sessionID); + return Task.FromResult(_hideoutCallbacks.ScavCaseProductionStart(pmcData, body as HideoutScavCaseStartRequestData, sessionID)); case HideoutEventActions.HIDEOUT_CONTINUOUS_PRODUCTION_START: - return _hideoutCallbacks.ContinuousProductionStart(pmcData, body as HideoutContinuousProductionStartRequestData, sessionID); + return Task.FromResult(_hideoutCallbacks.ContinuousProductionStart(pmcData, body as HideoutContinuousProductionStartRequestData, sessionID)); case HideoutEventActions.HIDEOUT_TAKE_PRODUCTION: - return _hideoutCallbacks.TakeProduction(pmcData, body as HideoutTakeProductionRequestData, sessionID); + return Task.FromResult(_hideoutCallbacks.TakeProduction(pmcData, body as HideoutTakeProductionRequestData, sessionID)); case HideoutEventActions.HIDEOUT_RECORD_SHOOTING_RANGE_POINTS: - return _hideoutCallbacks.RecordShootingRangePoints(pmcData, body as RecordShootingRangePoints, sessionID, output); + return Task.FromResult(_hideoutCallbacks.RecordShootingRangePoints(pmcData, body as RecordShootingRangePoints, sessionID, output)); case HideoutEventActions.HIDEOUT_IMPROVE_AREA: - return _hideoutCallbacks.ImproveArea(pmcData, body as HideoutImproveAreaRequestData, sessionID); + return Task.FromResult(_hideoutCallbacks.ImproveArea(pmcData, body as HideoutImproveAreaRequestData, sessionID)); case HideoutEventActions.HIDEOUT_CANCEL_PRODUCTION_COMMAND: - return _hideoutCallbacks.CancelProduction(pmcData, body as HideoutImproveAreaRequestData, sessionID); + return Task.FromResult(_hideoutCallbacks.CancelProduction(pmcData, body as HideoutImproveAreaRequestData, sessionID)); case HideoutEventActions.HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START: - return _hideoutCallbacks.CicleOfCultistProductionStart(pmcData, body as HideoutCircleOfCultistProductionStartRequestData, sessionID); + return Task.FromResult(_hideoutCallbacks.CicleOfCultistProductionStart(pmcData, body as HideoutCircleOfCultistProductionStartRequestData, sessionID)); case HideoutEventActions.HIDEOUT_DELETE_PRODUCTION_COMMAND: - return _hideoutCallbacks.HideoutDeleteProductionCommand(pmcData, body as HideoutDeleteProductionRequestData, sessionID); + return Task.FromResult(_hideoutCallbacks.HideoutDeleteProductionCommand(pmcData, body as HideoutDeleteProductionRequestData, sessionID)); case HideoutEventActions.HIDEOUT_CUSTOMIZATION_APPLY_COMMAND: - return _hideoutCallbacks.HideoutCustomizationApplyCommand(pmcData, body as HideoutCustomizationApplyRequestData, sessionID); + return Task.FromResult(_hideoutCallbacks.HideoutCustomizationApplyCommand(pmcData, body as HideoutCustomizationApplyRequestData, sessionID)); case HideoutEventActions.HIDEOUT_CUSTOMIZATION_SET_MANNEQUIN_POSE: - return _hideoutCallbacks.HideoutCustomizationSetMannequinPose(pmcData, body as HideoutCustomizationSetMannequinPoseRequest, sessionID); + return Task.FromResult(_hideoutCallbacks.HideoutCustomizationSetMannequinPose(pmcData, body as HideoutCustomizationSetMannequinPoseRequest, sessionID)); default: throw new Exception($"HideoutItemEventRouter being used when it cant handle route {url}"); } diff --git a/Core/Routers/ItemEvents/InsuranceItemEventRouter.cs b/Core/Routers/ItemEvents/InsuranceItemEventRouter.cs index bde9c88f..a142ee0c 100644 --- a/Core/Routers/ItemEvents/InsuranceItemEventRouter.cs +++ b/Core/Routers/ItemEvents/InsuranceItemEventRouter.cs @@ -1,4 +1,4 @@ -using Core.Annotations; +using Core.Annotations; using Core.Callbacks; using Core.DI; using Core.Models.Eft.Common; @@ -28,12 +28,12 @@ public class InsuranceItemEventRouter : ItemEventRouterDefinition }; } - public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + public override Task HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) { switch (url) { case "Insure": - return _insuranceCallbacks.Insure(pmcData, body as InsureRequestData, sessionID); + return Task.FromResult(_insuranceCallbacks.Insure(pmcData, body as InsureRequestData, sessionID)); default: throw new Exception($"InsuranceItemEventRouter being used when it cant handle route {url}"); } diff --git a/Core/Routers/ItemEvents/InventoryItemEventRouter.cs b/Core/Routers/ItemEvents/InventoryItemEventRouter.cs index 6ddde132..1f2128a1 100644 --- a/Core/Routers/ItemEvents/InventoryItemEventRouter.cs +++ b/Core/Routers/ItemEvents/InventoryItemEventRouter.cs @@ -1,4 +1,4 @@ -using Core.Annotations; +using Core.Annotations; using Core.Callbacks; using Core.DI; using Core.Models.Eft.Common; @@ -56,55 +56,55 @@ public class InventoryItemEventRouter : ItemEventRouterDefinition }; } - public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + public override Task HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) { switch (url) { case ItemEventActions.MOVE: - return _inventoryCallbacks.MoveItem(pmcData, body as InventoryMoveRequestData, sessionID, output); + return Task.FromResult(_inventoryCallbacks.MoveItem(pmcData, body as InventoryMoveRequestData, sessionID, output)); case ItemEventActions.REMOVE: - return _inventoryCallbacks.RemoveItem(pmcData, body as InventoryRemoveRequestData, sessionID, output); + return Task.FromResult(_inventoryCallbacks.RemoveItem(pmcData, body as InventoryRemoveRequestData, sessionID, output)); case ItemEventActions.SPLIT: - return _inventoryCallbacks.SplitItem(pmcData, body as InventorySplitRequestData, sessionID, output); + return Task.FromResult(_inventoryCallbacks.SplitItem(pmcData, body as InventorySplitRequestData, sessionID, output)); case ItemEventActions.MERGE: - return _inventoryCallbacks.MergeItem(pmcData, body as InventoryMergeRequestData, sessionID, output); + return Task.FromResult(_inventoryCallbacks.MergeItem(pmcData, body as InventoryMergeRequestData, sessionID, output)); case ItemEventActions.TRANSFER: - return _inventoryCallbacks.TransferItem(pmcData, body as InventoryTransferRequestData, sessionID, output); + return Task.FromResult(_inventoryCallbacks.TransferItem(pmcData, body as InventoryTransferRequestData, sessionID, output)); case ItemEventActions.SWAP: - return _inventoryCallbacks.SwapItem(pmcData, body as InventorySwapRequestData, sessionID); + return Task.FromResult(_inventoryCallbacks.SwapItem(pmcData, body as InventorySwapRequestData, sessionID)); case ItemEventActions.FOLD: - return _inventoryCallbacks.FoldItem(pmcData, body as InventoryFoldRequestData, sessionID); + return Task.FromResult(_inventoryCallbacks.FoldItem(pmcData, body as InventoryFoldRequestData, sessionID)); case ItemEventActions.TOGGLE: - return _inventoryCallbacks.ToggleItem(pmcData, body as InventoryToggleRequestData, sessionID); + return Task.FromResult(_inventoryCallbacks.ToggleItem(pmcData, body as InventoryToggleRequestData, sessionID)); case ItemEventActions.TAG: - return _inventoryCallbacks.TagItem(pmcData, body as InventoryTagRequestData, sessionID); + return Task.FromResult(_inventoryCallbacks.TagItem(pmcData, body as InventoryTagRequestData, sessionID)); case ItemEventActions.BIND: - return _inventoryCallbacks.BindItem(pmcData, body as InventoryBindRequestData, sessionID, output); + return Task.FromResult(_inventoryCallbacks.BindItem(pmcData, body as InventoryBindRequestData, sessionID, output)); case ItemEventActions.UNBIND: - return _inventoryCallbacks.UnBindItem(pmcData, body as InventoryBindRequestData, sessionID, output); + return Task.FromResult(_inventoryCallbacks.UnBindItem(pmcData, body as InventoryBindRequestData, sessionID, output)); case ItemEventActions.EXAMINE: - return _inventoryCallbacks.ExamineItem(pmcData, body as InventoryExamineRequestData, sessionID, output); + return Task.FromResult(_inventoryCallbacks.ExamineItem(pmcData, body as InventoryExamineRequestData, sessionID, output)); case ItemEventActions.READ_ENCYCLOPEDIA: - return _inventoryCallbacks.ReadEncyclopedia(pmcData, body as InventoryReadEncyclopediaRequestData, sessionID); + return Task.FromResult(_inventoryCallbacks.ReadEncyclopedia(pmcData, body as InventoryReadEncyclopediaRequestData, sessionID)); case ItemEventActions.APPLY_INVENTORY_CHANGES: - return _inventoryCallbacks.SortInventory(pmcData, body as InventorySortRequestData, sessionID, output); + return Task.FromResult(_inventoryCallbacks.SortInventory(pmcData, body as InventorySortRequestData, sessionID, output)); case ItemEventActions.CREATE_MAP_MARKER: - return _inventoryCallbacks.CreateMapMarker(pmcData, body as InventoryCreateMarkerRequestData, sessionID, output); + return Task.FromResult(_inventoryCallbacks.CreateMapMarker(pmcData, body as InventoryCreateMarkerRequestData, sessionID, output)); case ItemEventActions.DELETE_MAP_MARKER: - return _inventoryCallbacks.DeleteMapMarker(pmcData, body as InventoryDeleteMarkerRequestData, sessionID, output); + return Task.FromResult(_inventoryCallbacks.DeleteMapMarker(pmcData, body as InventoryDeleteMarkerRequestData, sessionID, output)); case ItemEventActions.EDIT_MAP_MARKER: - return _inventoryCallbacks.EditMapMarker(pmcData, body as InventoryEditMarkerRequestData, sessionID, output); + return Task.FromResult(_inventoryCallbacks.EditMapMarker(pmcData, body as InventoryEditMarkerRequestData, sessionID, output)); case ItemEventActions.OPEN_RANDOM_LOOT_CONTAINER: - return _inventoryCallbacks.OpenRandomLootContainer(pmcData, body as OpenRandomLootContainerRequestData, sessionID, output); + return Task.FromResult(_inventoryCallbacks.OpenRandomLootContainer(pmcData, body as OpenRandomLootContainerRequestData, sessionID, output)); case ItemEventActions.HIDEOUT_QTE_EVENT: - return _hideoutCallbacks.HandleQTEEvent(pmcData, body as HandleQTEEventRequestData, sessionID, output); + return Task.FromResult(_hideoutCallbacks.HandleQTEEvent(pmcData, body as HandleQTEEventRequestData, sessionID, output)); case ItemEventActions.REDEEM_PROFILE_REWARD: - return _inventoryCallbacks.RedeemProfileReward(pmcData, body as RedeemProfileRequestData, sessionID, output); + return Task.FromResult(_inventoryCallbacks.RedeemProfileReward(pmcData, body as RedeemProfileRequestData, sessionID, output)); case ItemEventActions.SET_FAVORITE_ITEMS: - return _inventoryCallbacks.SetFavoriteItem(pmcData, body as SetFavoriteItems, sessionID, output); + return Task.FromResult(_inventoryCallbacks.SetFavoriteItem(pmcData, body as SetFavoriteItems, sessionID, output)); case ItemEventActions.QUEST_FAIL: - return _inventoryCallbacks.FailQuest(pmcData, body as FailQuestRequestData, sessionID, output); + return Task.FromResult(_inventoryCallbacks.FailQuest(pmcData, body as FailQuestRequestData, sessionID, output)); case ItemEventActions.PIN_LOCK: - return _inventoryCallbacks.PinOrLock(pmcData, body as PinOrLockItemRequest, sessionID, output); + return Task.FromResult(_inventoryCallbacks.PinOrLock(pmcData, body as PinOrLockItemRequest, sessionID, output)); default: throw new Exception($"InventoryItemEventRouter being used when it cant handle route {url}"); } diff --git a/Core/Routers/ItemEvents/NoteItemEventRouter.cs b/Core/Routers/ItemEvents/NoteItemEventRouter.cs index c56a09c9..3e6a468c 100644 --- a/Core/Routers/ItemEvents/NoteItemEventRouter.cs +++ b/Core/Routers/ItemEvents/NoteItemEventRouter.cs @@ -1,4 +1,4 @@ -using Core.Annotations; +using Core.Annotations; using Core.Callbacks; using Core.DI; using Core.Models.Eft.Common; @@ -30,16 +30,16 @@ public class NoteItemEventRouter : ItemEventRouterDefinition }; } - public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + public override Task HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) { switch (url) { case "AddNote": - return _noteCallbacks.AddNote(pmcData, body as NoteActionData, sessionID); + return Task.FromResult(_noteCallbacks.AddNote(pmcData, body as NoteActionData, sessionID)); case "EditNote": - return _noteCallbacks.EditNote(pmcData, body as NoteActionData, sessionID); + return Task.FromResult(_noteCallbacks.EditNote(pmcData, body as NoteActionData, sessionID)); case "DeleteNote": - return _noteCallbacks.DeleteNote(pmcData, body as NoteActionData, sessionID); + return Task.FromResult(_noteCallbacks.DeleteNote(pmcData, body as NoteActionData, sessionID)); default: throw new Exception($"NoteItemEventRouter being used when it cant handle route {url}"); } diff --git a/Core/Routers/ItemEvents/QuestItemEventRouter.cs b/Core/Routers/ItemEvents/QuestItemEventRouter.cs index fd65451d..d02e631b 100644 --- a/Core/Routers/ItemEvents/QuestItemEventRouter.cs +++ b/Core/Routers/ItemEvents/QuestItemEventRouter.cs @@ -1,4 +1,4 @@ -using Core.Annotations; +using Core.Annotations; using Core.Callbacks; using Core.DI; using Core.Models.Eft.Common; @@ -32,17 +32,17 @@ public class QuestItemEventRouter : ItemEventRouterDefinition }; } - public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + public override Task HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) { switch (url) { case "QuestAccept": - return _questCallbacks.AcceptQuest(pmcData, body as AcceptQuestRequestData, sessionID); + return Task.FromResult(_questCallbacks.AcceptQuest(pmcData, body as AcceptQuestRequestData, sessionID)); case "QuestComplete": - return _questCallbacks.CompleteQuest(pmcData, body as CompleteQuestRequestData, sessionID); + return Task.FromResult(_questCallbacks.CompleteQuest(pmcData, body as CompleteQuestRequestData, sessionID)); case "QuestHandover": - return _questCallbacks.HandoverQuest(pmcData, body as HandoverQuestRequestData, sessionID); + return Task.FromResult(_questCallbacks.HandoverQuest(pmcData, body as HandoverQuestRequestData, sessionID)); case "RepeatableQuestChange": - return _questCallbacks.ChangeRepeatableQuest(pmcData, body as RepeatableQuestChangeRequest, sessionID); + return Task.FromResult(_questCallbacks.ChangeRepeatableQuest(pmcData, body as RepeatableQuestChangeRequest, sessionID)); default: throw new Exception($"QuestItemEventRouter being used when it cant handle route {url}"); } diff --git a/Core/Routers/ItemEvents/RagfairItemEventRouter.cs b/Core/Routers/ItemEvents/RagfairItemEventRouter.cs index 08734564..9b559496 100644 --- a/Core/Routers/ItemEvents/RagfairItemEventRouter.cs +++ b/Core/Routers/ItemEvents/RagfairItemEventRouter.cs @@ -1,4 +1,4 @@ -using Core.Annotations; +using Core.Annotations; using Core.Callbacks; using Core.DI; using Core.Models.Eft.Common; @@ -30,15 +30,15 @@ public class RagfairItemEventRouter : ItemEventRouterDefinition }; } - public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + public override Task HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) { switch (url) { case "RagFairAddOffer": - return _ragfairCallbacks.AddOffer(pmcData, body as AddOfferRequestData, sessionID); + return Task.FromResult(_ragfairCallbacks.AddOffer(pmcData, body as AddOfferRequestData, sessionID)); case "RagFairRemoveOffer": - return _ragfairCallbacks.RemoveOffer(pmcData, body as RemoveOfferRequestData, sessionID); + return Task.FromResult(_ragfairCallbacks.RemoveOffer(pmcData, body as RemoveOfferRequestData, sessionID)); case "RagFairRenewOffer": - return _ragfairCallbacks.ExtendOffer(pmcData, body as ExtendOfferRequestData, sessionID); + return Task.FromResult(_ragfairCallbacks.ExtendOffer(pmcData, body as ExtendOfferRequestData, sessionID)); default: throw new Exception($"CustomizationItemEventRouter being used when it cant handle route {url}"); } diff --git a/Core/Routers/ItemEvents/RepairItemEventRouter.cs b/Core/Routers/ItemEvents/RepairItemEventRouter.cs index c30e0fc8..ce7f903e 100644 --- a/Core/Routers/ItemEvents/RepairItemEventRouter.cs +++ b/Core/Routers/ItemEvents/RepairItemEventRouter.cs @@ -1,4 +1,4 @@ -using Core.Annotations; +using Core.Annotations; using Core.Callbacks; using Core.DI; using Core.Models.Eft.Common; @@ -29,13 +29,13 @@ public class RepairItemEventRouter : ItemEventRouterDefinition }; } - public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + public override Task HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) { switch (url) { case "Repair": - return _repairCallbacks.Repair(pmcData, body as RepairActionDataRequest, sessionID); + return Task.FromResult(_repairCallbacks.Repair(pmcData, body as RepairActionDataRequest, sessionID)); case "TraderRepair": - return _repairCallbacks.TraderRepair(pmcData, body as TraderRepairActionDataRequest, sessionID); + return Task.FromResult(_repairCallbacks.TraderRepair(pmcData, body as TraderRepairActionDataRequest, sessionID)); default: throw new Exception($"RepairItemEventRouter being used when it cant handle route {url}"); } diff --git a/Core/Routers/ItemEvents/TradeItemEventRouter.cs b/Core/Routers/ItemEvents/TradeItemEventRouter.cs index 67bd8f0a..29ec6447 100644 --- a/Core/Routers/ItemEvents/TradeItemEventRouter.cs +++ b/Core/Routers/ItemEvents/TradeItemEventRouter.cs @@ -1,4 +1,4 @@ -using Core.Annotations; +using Core.Annotations; using Core.Callbacks; using Core.DI; using Core.Models.Eft.Common; @@ -30,15 +30,15 @@ public class TradeItemEventRouter : ItemEventRouterDefinition }; } - public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + public override Task HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) { switch (url) { case "TradingConfirm": - return _tradeCallbacks.ProcessTrade(pmcData, body as ProcessBaseTradeRequestData, sessionID); + return Task.FromResult(_tradeCallbacks.ProcessTrade(pmcData, body as ProcessBaseTradeRequestData, sessionID)); case "RagFairBuyOffer": - return _tradeCallbacks.ProcessRagfairTrade(pmcData, body as ProcessRagfairTradeRequestData, sessionID); + return Task.FromResult(_tradeCallbacks.ProcessRagfairTrade(pmcData, body as ProcessRagfairTradeRequestData, sessionID)); case "SellAllFromSavage": - return _tradeCallbacks.SellAllFromSavage(pmcData, body as SellScavItemsToFenceRequestData, sessionID); + return Task.FromResult(_tradeCallbacks.SellAllFromSavage(pmcData, body as SellScavItemsToFenceRequestData, sessionID)); default: throw new Exception($"TradeItemEventRouter being used when it cant handle route {url}"); } diff --git a/Core/Routers/ItemEvents/WishlistItemEventRouter.cs b/Core/Routers/ItemEvents/WishlistItemEventRouter.cs index d86af900..c9d60ce3 100644 --- a/Core/Routers/ItemEvents/WishlistItemEventRouter.cs +++ b/Core/Routers/ItemEvents/WishlistItemEventRouter.cs @@ -1,4 +1,4 @@ -using Core.Annotations; +using Core.Annotations; using Core.Callbacks; using Core.DI; using Core.Models.Eft.Common; @@ -30,16 +30,16 @@ public class WishlistItemEventRouter : ItemEventRouterDefinition }; } - public override object HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) + public override Task HandleItemEvent(string url, PmcData pmcData, object body, string sessionID, ItemEventRouterResponse output) { switch (url) { case "AddToWishList": - return _wishlistCallbacks.AddToWishlist(pmcData, body as AddToWishlistRequest, sessionID); + return Task.FromResult(_wishlistCallbacks.AddToWishlist(pmcData, body as AddToWishlistRequest, sessionID)); case "RemoveFromWishList": - return _wishlistCallbacks.RemoveFromWishlist(pmcData, body as RemoveFromWishlistRequest, sessionID); + return Task.FromResult(_wishlistCallbacks.RemoveFromWishlist(pmcData, body as RemoveFromWishlistRequest, sessionID)); case "ChangeWishlistItemCategory": - return _wishlistCallbacks.ChangeWishlistItemCategory(pmcData, body as ChangeWishlistItemCategoryRequest, sessionID); + return Task.FromResult(_wishlistCallbacks.ChangeWishlistItemCategory(pmcData, body as ChangeWishlistItemCategoryRequest, sessionID)); default: throw new Exception($"CustomizationItemEventRouter being used when it cant handle route {url}"); } diff --git a/Core/Services/SeasonalEventService.cs b/Core/Services/SeasonalEventService.cs index 34e7926a..eaff5fb6 100644 --- a/Core/Services/SeasonalEventService.cs +++ b/Core/Services/SeasonalEventService.cs @@ -744,7 +744,7 @@ public class SeasonalEventService } /// - /// Add lootble items from backpack into patrol.ITEMS_TO_DROP difficulty property + /// Add lootable items from backpack into patrol.ITEMS_TO_DROP difficulty property /// protected void AddLootItemsToGifterDropItemsList() { diff --git a/Server/Logger/WebApplicationLogger.cs b/Server/Logger/WebApplicationLogger.cs index b760359a..66142c61 100644 --- a/Server/Logger/WebApplicationLogger.cs +++ b/Server/Logger/WebApplicationLogger.cs @@ -1,4 +1,5 @@ using Core.Annotations; +using Core.Models.Eft.ItemEvent; using Core.Models.Logging; using Core.Models.Utils; @@ -76,4 +77,15 @@ public class SptWebApplicationLogger : ISptLogger { _logger.LogCritical(ex, GetColorizedText(data, LogTextColor.Black, LogBackgroundColor.Red)); } + + public void WriteToLogFile(Daum body) + { + throw new NotImplementedException(); + } + + public void WriteToLogFile(object data) + { + //TODO - implement + turn object into json + _logger.LogError("NOT IMPLEMENTED - WriteToLogFile"); + } }