From 5b2ec98701f862095a5e47c20ae7e89d29d96852 Mon Sep 17 00:00:00 2001 From: Spirtix Date: Tue, 27 Jun 2023 18:20:57 +0200 Subject: [PATCH] stub various endpoints --- mitm-redirect.py | 12 +- .../Common/AchievementController.cs | 36 + src/Controllers/Common/ChallengeController.cs | 14 + .../Common/ConfigurationController.cs | 15 + src/Controllers/Common/ContentController.cs | 8 + src/Controllers/Common/ItemStoreController.cs | 9 + src/Controllers/Common/MessagingController.cs | 30 + src/Resources/achievementtaskinfo.xml | 843 ++++++++++++++++++ src/Resources/rankattrib.xml | 431 +++++++++ src/Resources/rewardmultiplier.xml | 24 + src/Schema/ArrayOfMessageInfo.cs | 10 + src/Schema/ArrayOfUserAchievementInfo.cs | 10 + src/Schema/Buddy.cs | 28 + src/Schema/BuddyList.cs | 12 + src/Schema/BuddyStatus.cs | 20 + src/Schema/ChallengeContenderInfo.cs | 22 + src/Schema/ChallengeGameInfo.cs | 18 + src/Schema/ChallengeInfo.cs | 32 + src/Schema/ChallengeState.cs | 19 + src/Schema/MMOServerData.cs | 25 + src/Schema/MMOServerInformation.cs | 14 + src/Schema/MessageInfo.cs | 50 ++ src/sodoff.csproj | 14 +- 23 files changed, 1694 insertions(+), 2 deletions(-) create mode 100644 src/Controllers/Common/ChallengeController.cs create mode 100644 src/Controllers/Common/ConfigurationController.cs create mode 100644 src/Controllers/Common/MessagingController.cs create mode 100644 src/Resources/achievementtaskinfo.xml create mode 100644 src/Resources/rankattrib.xml create mode 100644 src/Resources/rewardmultiplier.xml create mode 100644 src/Schema/ArrayOfMessageInfo.cs create mode 100644 src/Schema/ArrayOfUserAchievementInfo.cs create mode 100644 src/Schema/Buddy.cs create mode 100644 src/Schema/BuddyList.cs create mode 100644 src/Schema/BuddyStatus.cs create mode 100644 src/Schema/ChallengeContenderInfo.cs create mode 100644 src/Schema/ChallengeGameInfo.cs create mode 100644 src/Schema/ChallengeInfo.cs create mode 100644 src/Schema/ChallengeState.cs create mode 100644 src/Schema/MMOServerData.cs create mode 100644 src/Schema/MMOServerInformation.cs create mode 100644 src/Schema/MessageInfo.cs diff --git a/mitm-redirect.py b/mitm-redirect.py index 3beaf06..7a40bea 100644 --- a/mitm-redirect.py +++ b/mitm-redirect.py @@ -41,7 +41,17 @@ methods = [ 'GetSelectedRaisedPet', 'SetImage', 'GetImage', - 'GetImageByUserId' + 'GetImageByUserId', + 'GetAchievementTaskInfo', + 'GetAllRewardTypeMultiplier', + 'GetBuddyList', + 'GetRankAttributeData', + 'GetUserMessageQueue', + 'SendMessage', + 'SaveMessage', + 'GetMMOServerInfoWithZone', + 'GetActiveChallenges', + 'GetAchievementsByUserID' ] def routable(path): diff --git a/src/Controllers/Common/AchievementController.cs b/src/Controllers/Common/AchievementController.cs index 9018cc2..82bd64c 100644 --- a/src/Controllers/Common/AchievementController.cs +++ b/src/Controllers/Common/AchievementController.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Mvc; using sodoff.Model; +using sodoff.Schema; using sodoff.Util; namespace sodoff.Controllers.Common; @@ -27,4 +28,39 @@ public class AchievementController : Controller { // TODO, this is a placeholder return Ok(XmlUtil.ReadResourceXmlString("allranks")); } + + [HttpPost] + //[Produces("application/xml")] + [Route("AchievementWebService.asmx/GetAchievementTaskInfo")] + public IActionResult GetAchievementTaskInfo() { + // TODO + return Ok(XmlUtil.ReadResourceXmlString("achievementtaskinfo")); + } + + [HttpPost] + //[Produces("application/xml")] + [Route("AchievementWebService.asmx/GetAllRewardTypeMultiplier")] + public IActionResult GetAllRewardTypeMultiplier() { + // TODO + return Ok(XmlUtil.ReadResourceXmlString("rewardmultiplier")); + } + + [HttpPost] + [Produces("application/xml")] + [Route("AchievementWebService.asmx/GetAchievementsByUserID")] + public IActionResult GetAchievementsByUserID([FromForm] string userId) { + // TODO: this is a placeholder + ArrayOfUserAchievementInfo arrAchievements = new ArrayOfUserAchievementInfo { + UserAchievementInfo = new UserAchievementInfo[]{ + new UserAchievementInfo { + UserID = Guid.Parse(userId), + AchievementPointTotal = 0, + RankID = 1, + PointTypeID = 1 + } + } + }; + + return Ok(arrAchievements); + } } diff --git a/src/Controllers/Common/ChallengeController.cs b/src/Controllers/Common/ChallengeController.cs new file mode 100644 index 0000000..4280e7e --- /dev/null +++ b/src/Controllers/Common/ChallengeController.cs @@ -0,0 +1,14 @@ +using Microsoft.AspNetCore.Mvc; +using sodoff.Schema; + +namespace sodoff.Controllers.Common; +public class ChallengeController : Controller { + + [HttpPost] + [Produces("application/xml")] + [Route("ContentWebService.asmx/ChallengeWebService.asmx/GetActiveChallenges")] + public IActionResult GetActiveChallenges() { + // TODO: this is a placeholder + return Ok(new ChallengeInfo[0]); + } +} diff --git a/src/Controllers/Common/ConfigurationController.cs b/src/Controllers/Common/ConfigurationController.cs new file mode 100644 index 0000000..79989a8 --- /dev/null +++ b/src/Controllers/Common/ConfigurationController.cs @@ -0,0 +1,15 @@ +using Microsoft.AspNetCore.Mvc; +using sodoff.Schema; + +namespace sodoff.Controllers.Common; + +public class ConfigurationController : Controller { + + [HttpPost] + [Produces("application/xml")] + [Route("ConfigurationWebService.asmx/GetMMOServerInfoWithZone")] + public IActionResult GetMMOServerInfoWithZone() { + // TODO: this is a placeholder + return Ok(new MMOServerInformation[0]); + } +} diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index fdc66f9..234606b 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -504,6 +504,14 @@ public class ContentController : Controller { return Ok(taskResult); } + [HttpPost] + [Produces("application/xml")] + [Route("ContentWebService.asmx/GetBuddyList")] + public IActionResult GetBuddyList() { + // TODO: this is a placeholder + return Ok(new BuddyList[0]); + } + private RaisedPetData GetRaisedPetDataFromDragon (Dragon dragon) { RaisedPetData data = XmlUtil.DeserializeXml(dragon.RaisedPetData); data.RaisedPetID = dragon.Id; diff --git a/src/Controllers/Common/ItemStoreController.cs b/src/Controllers/Common/ItemStoreController.cs index 7106da4..f1c4e7e 100644 --- a/src/Controllers/Common/ItemStoreController.cs +++ b/src/Controllers/Common/ItemStoreController.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Mvc; using sodoff.Model; +using sodoff.Util; namespace sodoff.Controllers.Common; public class ItemStoreController : Controller { @@ -25,4 +26,12 @@ public class ItemStoreController : Controller { return Ok(result); } } + + [HttpPost] + //[Produces("application/xml")] + [Route("ItemStoreWebService.asmx/GetRankAttributeData")] + public IActionResult GetRankAttributeData() { + // TODO + return Ok(XmlUtil.ReadResourceXmlString("rankattrib")); + } } diff --git a/src/Controllers/Common/MessagingController.cs b/src/Controllers/Common/MessagingController.cs new file mode 100644 index 0000000..d348811 --- /dev/null +++ b/src/Controllers/Common/MessagingController.cs @@ -0,0 +1,30 @@ +using Microsoft.AspNetCore.Mvc; +using sodoff.Schema; + +namespace sodoff.Controllers.Common; +public class MessagingController : Controller { + + [HttpPost] + [Produces("application/xml")] + [Route("MessagingWebService.asmx/GetUserMessageQueue")] + public ArrayOfMessageInfo? GetUserMessageQueue() { + // TODO: this is a placeholder + return null; + } + + [HttpPost] + [Produces("application/xml")] + [Route("MessagingWebService.asmx/SendMessage")] + public IActionResult SendMessage() { + // TODO: this is a placeholder + return Ok(false); + } + + [HttpPost] + [Produces("application/xml")] + [Route("MessagingWebService.asmx/SaveMessage")] + public IActionResult SaveMessage() { + // TODO: this is a placeholder + return Ok(false); + } +} diff --git a/src/Resources/achievementtaskinfo.xml b/src/Resources/achievementtaskinfo.xml new file mode 100644 index 0000000..e0efc8d --- /dev/null +++ b/src/Resources/achievementtaskinfo.xml @@ -0,0 +1,843 @@ + + + + 12418 + 2471 + 2418 + Thawfest 2023 Event Rewards + 1 + 0 + 50 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12419 + 2471 + 2418 + Thawfest 2023 Event Rewards + 2 + 0 + 100 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12420 + 2471 + 2418 + Thawfest 2023 Event Rewards + 3 + 0 + 150 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12421 + 2471 + 2418 + Thawfest 2023 Event Rewards + 4 + 0 + 200 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12422 + 2471 + 2418 + Thawfest 2023 Event Rewards + 5 + 0 + 300 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12423 + 2471 + 2418 + Thawfest 2023 Event Rewards + 6 + 0 + 400 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12424 + 2471 + 2418 + Thawfest 2023 Event Rewards + 7 + 0 + 500 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12425 + 2471 + 2418 + Thawfest 2023 Event Rewards + 8 + 0 + 600 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12426 + 2471 + 2418 + Thawfest 2023 Event Rewards + 9 + 0 + 700 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12427 + 2471 + 2418 + Thawfest 2023 Event Rewards + 10 + 0 + 800 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12428 + 2471 + 2418 + Thawfest 2023 Event Rewards + 11 + 0 + 900 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12429 + 2471 + 2418 + Thawfest 2023 Event Rewards + 12 + 0 + 1000 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12430 + 2471 + 2418 + Thawfest 2023 Event Rewards + 13 + 0 + 1500 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12431 + 2471 + 2418 + Thawfest 2023 Event Rewards + 14 + 0 + 2000 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12432 + 2471 + 2418 + Thawfest 2023 Event Rewards + 15 + 0 + 2500 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12433 + 2471 + 2418 + Thawfest 2023 Event Rewards + 16 + 0 + 3000 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12434 + 2471 + 2418 + Thawfest 2023 Event Rewards + 17 + 0 + 3500 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12435 + 2471 + 2418 + Thawfest 2023 Event Rewards + 18 + 0 + 4000 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12436 + 2471 + 2418 + Thawfest 2023 Event Rewards + 19 + 0 + 4500 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12437 + 2471 + 2418 + Thawfest 2023 Event Rewards + 20 + 0 + 5000 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12438 + 2471 + 2418 + Thawfest 2023 Event Rewards + 21 + 0 + 5500 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12439 + 2471 + 2418 + Thawfest 2023 Event Rewards + 22 + 0 + 6000 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12440 + 2471 + 2418 + Thawfest 2023 Event Rewards + 23 + 0 + 6500 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12441 + 2471 + 2418 + Thawfest 2023 Event Rewards + 24 + 0 + 7000 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12442 + 2471 + 2418 + Thawfest 2023 Event Rewards + 25 + 0 + 7500 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12443 + 2471 + 2418 + Thawfest 2023 Event Rewards + 26 + 0 + 8000 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12444 + 2471 + 2418 + Thawfest 2023 Event Rewards + 27 + 0 + 8500 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12445 + 2471 + 2418 + Thawfest 2023 Event Rewards + 28 + 0 + 9000 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12446 + 2471 + 2418 + Thawfest 2023 Event Rewards + 29 + 0 + 9500 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12447 + 2471 + 2418 + Thawfest 2023 Event Rewards + 30 + 0 + 10000 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12448 + 2471 + 2418 + Thawfest 2023 Event Rewards + 31 + 0 + 11000 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12449 + 2471 + 2418 + Thawfest 2023 Event Rewards + 32 + 0 + 12000 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12450 + 2471 + 2418 + Thawfest 2023 Event Rewards + 33 + 0 + 13000 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12451 + 2471 + 2418 + Thawfest 2023 Event Rewards + 34 + 0 + 14000 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12452 + 2471 + 2418 + Thawfest 2023 Event Rewards + 35 + 0 + 15000 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12453 + 2471 + 2418 + Thawfest 2023 Event Rewards + 36 + 0 + 16000 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12454 + 2471 + 2418 + Thawfest 2023 Event Rewards + 37 + 0 + 17000 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12455 + 2471 + 2418 + Thawfest 2023 Event Rewards + 38 + 0 + 18000 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12456 + 2471 + 2418 + Thawfest 2023 Event Rewards + 39 + 0 + 19000 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + + 12457 + 2471 + 2418 + Thawfest 2023 Event Rewards + 40 + 0 + 20000 + false + true + false + 9 + 1 + true + 0 + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + false + 2023-02-01T00:00:00 + 2023-06-07T19:00:00 + + \ No newline at end of file diff --git a/src/Resources/rankattrib.xml b/src/Resources/rankattrib.xml new file mode 100644 index 0000000..088b769 --- /dev/null +++ b/src/Resources/rankattrib.xml @@ -0,0 +1,431 @@ + + + + 254 + + ENERGY + 20 + + + FIRE + 100 + + + HAPPINESS + 100 + + + + 255 + + ENERGY + 22 + + + + 256 + + ENERGY + 24 + + + + 257 + + ENERGY + 26 + + + + 258 + + ENERGY + 28 + + + + 259 + + ENERGY + 30 + + + + 260 + + ENERGY + 32 + + + + 261 + + ENERGY + 34 + + + + 262 + + ENERGY + 36 + + + + 263 + + ENERGY + 38 + + + + 264 + + ENERGY + 40 + + + + 265 + + ENERGY + 42 + + + + 266 + + ENERGY + 44 + + + + 267 + + ENERGY + 46 + + + + 268 + + ENERGY + 48 + + + + 269 + + ENERGY + 50 + + + + 270 + + ENERGY + 52 + + + + 271 + + ENERGY + 54 + + + + 272 + + ENERGY + 56 + + + + 273 + + ENERGY + 58 + + + + 274 + + ENERGY + 60 + + + + 275 + + ENERGY + 62 + + + + 276 + + ENERGY + 64 + + + + 277 + + ENERGY + 66 + + + + 278 + + ENERGY + 68 + + + + 279 + + ENERGY + 70 + + + + 280 + + ENERGY + 72 + + + + 281 + + ENERGY + 74 + + + + 282 + + ENERGY + 76 + + + + 283 + + ENERGY + 78 + + + + 284 + + HEALTH + 50 + + + + 285 + + HEALTH + 100 + + + + 286 + + HEALTH + 150 + + + + 287 + + HEALTH + 200 + + + + 288 + + HEALTH + 250 + + + + 289 + + HEALTH + 300 + + + + 290 + + HEALTH + 350 + + + + 291 + + HEALTH + 400 + + + + 292 + + HEALTH + 450 + + + + 293 + + HEALTH + 500 + + + + 294 + + HEALTH + 550 + + + + 295 + + HEALTH + 600 + + + + 296 + + HEALTH + 650 + + + + 297 + + HEALTH + 700 + + + + 298 + + HEALTH + 750 + + + + 299 + + HEALTH + 800 + + + + 300 + + HEALTH + 850 + + + + 301 + + HEALTH + 900 + + + + 302 + + HEALTH + 950 + + + + 303 + + HEALTH + 1000 + + + + 304 + + HEALTH + 1050 + + + + 305 + + HEALTH + 1100 + + + + 306 + + HEALTH + 1150 + + + + 307 + + HEALTH + 1200 + + + + 308 + + HEALTH + 1250 + + + + 309 + + HEALTH + 1300 + + + + 310 + + HEALTH + 1350 + + + + 311 + + HEALTH + 1400 + + + + 312 + + HEALTH + 1450 + + + + 313 + + HEALTH + 1500 + + + \ No newline at end of file diff --git a/src/Resources/rewardmultiplier.xml b/src/Resources/rewardmultiplier.xml new file mode 100644 index 0000000..26129ce --- /dev/null +++ b/src/Resources/rewardmultiplier.xml @@ -0,0 +1,24 @@ + + + + 1 + 2 + 2022-04-05T00:00:00 + 2023-07-01T07:00:00 + false + + + 12 + 2 + 2021-09-23T00:00:00 + 2023-07-01T07:00:00 + false + + + 8 + 2 + 2023-05-09T00:00:00 + 2023-07-01T07:00:00 + false + + \ No newline at end of file diff --git a/src/Schema/ArrayOfMessageInfo.cs b/src/Schema/ArrayOfMessageInfo.cs new file mode 100644 index 0000000..41bbab8 --- /dev/null +++ b/src/Schema/ArrayOfMessageInfo.cs @@ -0,0 +1,10 @@ +using System.Xml.Serialization; + +namespace sodoff.Schema; + +[XmlRoot(Namespace = "http://api.jumpstart.com/", IsNullable = true)] +[Serializable] +public class ArrayOfMessageInfo { + [XmlElement(ElementName = "MessageInfo")] + public MessageInfo[] MessageInfo; +} diff --git a/src/Schema/ArrayOfUserAchievementInfo.cs b/src/Schema/ArrayOfUserAchievementInfo.cs new file mode 100644 index 0000000..1b8f24f --- /dev/null +++ b/src/Schema/ArrayOfUserAchievementInfo.cs @@ -0,0 +1,10 @@ +using System.Xml.Serialization; + +namespace sodoff.Schema; + +[XmlRoot(ElementName = "ArrayOfUserAchievementInfo", Namespace = "http://api.jumpstart.com/")] +[Serializable] +public class ArrayOfUserAchievementInfo { + [XmlElement(ElementName = "UserAchievementInfo")] + public UserAchievementInfo[] UserAchievementInfo; +} diff --git a/src/Schema/Buddy.cs b/src/Schema/Buddy.cs new file mode 100644 index 0000000..e713c4a --- /dev/null +++ b/src/Schema/Buddy.cs @@ -0,0 +1,28 @@ +using System.Xml.Serialization; + +namespace sodoff.Schema; + +[XmlRoot(ElementName = "Buddy", Namespace = "")] +[Serializable] +public class Buddy { + [XmlElement(ElementName = "UserID")] + public string UserID; + + [XmlElement(ElementName = "DisplayName")] + public string DisplayName; + + [XmlElement(ElementName = "Status")] + public BuddyStatus Status; + + [XmlElement(ElementName = "CreateDate")] + public DateTime CreateDate; + + [XmlElement(ElementName = "Online")] + public bool Online; + + [XmlElement(ElementName = "OnMobile")] + public bool OnMobile; + + [XmlElement(ElementName = "BestBuddy")] + public bool BestBuddy; +} diff --git a/src/Schema/BuddyList.cs b/src/Schema/BuddyList.cs new file mode 100644 index 0000000..83344a8 --- /dev/null +++ b/src/Schema/BuddyList.cs @@ -0,0 +1,12 @@ +using System.Diagnostics; +using System.Security.Cryptography.Xml; +using System.Xml.Serialization; + +namespace sodoff.Schema; + +[XmlRoot(Namespace = "http://api.jumpstart.com/", ElementName = "ArrayOfBuddy", IsNullable = true)] +[Serializable] +public class BuddyList { + [XmlElement(ElementName = "Buddy")] + public Buddy[] Buddy; +} diff --git a/src/Schema/BuddyStatus.cs b/src/Schema/BuddyStatus.cs new file mode 100644 index 0000000..6f5bfc1 --- /dev/null +++ b/src/Schema/BuddyStatus.cs @@ -0,0 +1,20 @@ +using System.Xml.Serialization; + +namespace sodoff.Schema; + +public enum BuddyStatus { + [XmlEnum("0")] + Unknown, + [XmlEnum("1")] + PendingApprovalFromOther, + [XmlEnum("2")] + PendingApprovalFromSelf, + [XmlEnum("3")] + Approved, + [XmlEnum("4")] + BlockedByOther, + [XmlEnum("5")] + BlockedBySelf, + [XmlEnum("6")] + BlockedByBoth +} diff --git a/src/Schema/ChallengeContenderInfo.cs b/src/Schema/ChallengeContenderInfo.cs new file mode 100644 index 0000000..3154a5b --- /dev/null +++ b/src/Schema/ChallengeContenderInfo.cs @@ -0,0 +1,22 @@ +using System.Xml.Serialization; + +namespace sodoff.Schema; + +[XmlRoot(ElementName = "ChallengeContenderInfo", IsNullable = false)] +[Serializable] +public class ChallengeContenderInfo { + [XmlElement(ElementName = "UserId")] + public Guid UserID; + + [XmlElement(ElementName = "ChallengeID")] + public int ChallengeID; + + [XmlElement(ElementName = "Points")] + public int Points; + + [XmlElement(ElementName = "ChallengeState")] + public ChallengeState ChallengeState; + + [XmlElement(ElementName = "ExpirationDate")] + public DateTime ExpirationDate; +} diff --git a/src/Schema/ChallengeGameInfo.cs b/src/Schema/ChallengeGameInfo.cs new file mode 100644 index 0000000..e01e0cc --- /dev/null +++ b/src/Schema/ChallengeGameInfo.cs @@ -0,0 +1,18 @@ +using System.Xml.Serialization; + +namespace sodoff.Schema; +[XmlRoot(ElementName = "ChallengeGameInfo", IsNullable = false)] +[Serializable] +public class ChallengeGameInfo { + [XmlElement(ElementName = "GameID")] + public int GameID; + + [XmlElement(ElementName = "GameLevelID")] + public int GameLevelID; + + [XmlElement(ElementName = "GameDifficultyID")] + public int? GameDifficultyID; + + [XmlElement(ElementName = "GameName")] + public string GameName; +} diff --git a/src/Schema/ChallengeInfo.cs b/src/Schema/ChallengeInfo.cs new file mode 100644 index 0000000..05374bd --- /dev/null +++ b/src/Schema/ChallengeInfo.cs @@ -0,0 +1,32 @@ +using System.Diagnostics; +using System.Security.AccessControl; +using System.Xml.Serialization; + +namespace sodoff.Schema; +[XmlRoot(ElementName = "ChallengeInfo", Namespace = "")] +[Serializable] +public class ChallengeInfo { + [XmlElement(ElementName = "ChallengeID")] + public int ChallengeID; + + [XmlElement(ElementName = "UserID")] + public Guid UserID; + + [XmlElement(ElementName = "ProductGroupID")] + public int ProductGroupID; + + [XmlElement(ElementName = "Points")] + public int Points; + + [XmlElement(ElementName = "ExpirationDate")] + public DateTime ExpirationDate; + + [XmlElement(ElementName = "ChallengeGameInfo")] + public ChallengeGameInfo ChallengeGameInfo; + + [XmlElement(ElementName = "ChallengeContenders")] + public ChallengeContenderInfo[] ChallengeContenders; + + [XmlElement(ElementName = "ExpirationDuration")] + public int ExpirationDuration; +} diff --git a/src/Schema/ChallengeState.cs b/src/Schema/ChallengeState.cs new file mode 100644 index 0000000..9432b39 --- /dev/null +++ b/src/Schema/ChallengeState.cs @@ -0,0 +1,19 @@ +using System.Xml.Serialization; + +namespace sodoff.Schema; + +[Serializable] +public enum ChallengeState { + [XmlEnum("1")] + Initiated = 1, + [XmlEnum("2")] + Accepted, + [XmlEnum("3")] + Rejected, + [XmlEnum("4")] + Won, + [XmlEnum("5")] + Lost, + [XmlEnum("6")] + Expired +} diff --git a/src/Schema/MMOServerData.cs b/src/Schema/MMOServerData.cs new file mode 100644 index 0000000..21e1eff --- /dev/null +++ b/src/Schema/MMOServerData.cs @@ -0,0 +1,25 @@ +using System.Xml.Serialization; + +namespace sodoff.Schema; + +[XmlRoot(ElementName = "MSI", Namespace = "")] +[Serializable] +public class MMOServerData { + [XmlElement(ElementName = "IP")] + public string IPAddress { get; set; } + + [XmlElement(ElementName = "PN")] + public int Port { get; set; } + + [XmlElement(ElementName = "VR")] + public string Version { get; set; } + + [XmlElement(ElementName = "DF")] + public bool isDefault { get; set; } + + [XmlElement(ElementName = "ZN")] + public string ZoneName { get; set; } + + [XmlElement(ElementName = "RZN")] + public string RootZone { get; set; } +} diff --git a/src/Schema/MMOServerInformation.cs b/src/Schema/MMOServerInformation.cs new file mode 100644 index 0000000..4a2f719 --- /dev/null +++ b/src/Schema/MMOServerInformation.cs @@ -0,0 +1,14 @@ +using System.Xml.Serialization; + +namespace sodoff.Schema; + +[XmlRoot(ElementName = "ArrayOfMMOServerInfo", Namespace = "http://api.jumpstart.com/")] +[Serializable] +public class MMOServerInformation { + + [XmlElement(ElementName = "RZN")] + public string RootZone { get; set; } + + [XmlElement(ElementName = "MMOServerInfo")] + public MMOServerData[] MMOServerDataArray; +} diff --git a/src/Schema/MessageInfo.cs b/src/Schema/MessageInfo.cs new file mode 100644 index 0000000..e21faee --- /dev/null +++ b/src/Schema/MessageInfo.cs @@ -0,0 +1,50 @@ +using System.Xml.Serialization; + +namespace sodoff.Schema; + +[XmlRoot(ElementName = "MessageInfo", Namespace = "http://api.jumpstart.com/", IsNullable = true)] +[Serializable] +public class MessageInfo { + [XmlElement(ElementName = "UserMessageQueueID", IsNullable = true)] + public int? UserMessageQueueID; + + [XmlElement(ElementName = "FromUserID", IsNullable = true)] + public string FromUserID; + + [XmlElement(ElementName = "MessageID", IsNullable = true)] + public int? MessageID; + + [XmlElement(ElementName = "MessageTypeID", IsNullable = true)] + public int? MessageTypeID; + + [XmlElement(ElementName = "MessageTypeName")] + public string MessageTypeName; + + [XmlElement(ElementName = "MemberMessage")] + public string MemberMessage; + + [XmlElement(ElementName = "NonMemberMessage")] + public string NonMemberMessage; + + [XmlElement(ElementName = "MemberImageUrl")] + public string MemberImageUrl; + + [XmlElement(ElementName = "NonMemberImageUrl")] + public string NonMemberImageUrl; + + [XmlElement(ElementName = "MemberLinkUrl")] + public string MemberLinkUrl; + + [XmlElement(ElementName = "NonMemberLinkUrl")] + public string NonMemberLinkUrl; + + [XmlElement(ElementName = "MemberAudioUrl")] + public string MemberAudioUrl; + + [XmlElement(ElementName = "NonMemberAudioUrl")] + public string NonMemberAudioUrl; + + [XmlElement(ElementName = "Data")] + public string Data; + +} diff --git a/src/sodoff.csproj b/src/sodoff.csproj index 087dcf4..d29e1c9 100644 --- a/src/sodoff.csproj +++ b/src/sodoff.csproj @@ -1,4 +1,4 @@ - + net6.0 @@ -13,8 +13,11 @@ + + + @@ -33,6 +36,15 @@ + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + PreserveNewest