From 0557523482205180853cffbd755b52601c432840 Mon Sep 17 00:00:00 2001 From: INSANEMODE Date: Tue, 17 Nov 2020 06:59:16 -0600 Subject: [PATCH] change version to 1.1, and add support for custom ranks, and allow reqests based on GUID. --- GscApiController.cs | 97 +++++++++++++++++++++++++++++++++++++++++---- Plugin.cs | 4 +- 2 files changed, 92 insertions(+), 9 deletions(-) diff --git a/GscApiController.cs b/GscApiController.cs index 87a39af..460f892 100644 --- a/GscApiController.cs +++ b/GscApiController.cs @@ -1,8 +1,10 @@ using Microsoft.AspNetCore.Mvc; using SharedLibraryCore; +using SharedLibraryCore.Database.Models; using SharedLibraryCore.Interfaces; using System.Linq; using System.Text; +using System.Threading.Tasks; namespace WebfrontCore.Controllers.API { @@ -11,9 +13,11 @@ namespace WebfrontCore.Controllers.API public class GscApiController : BaseController { string rankName; - public GscApiController(IManager manager) : base(manager) + EFMeta customRankName; + private readonly IMetaService _metaService; + public GscApiController(IManager manager, IMetaService metaService) : base(manager) { - + _metaService = metaService; } /// @@ -21,13 +25,12 @@ namespace WebfrontCore.Controllers.API /// /// /// - - [HttpGet("{clientname}")] - public IActionResult Clientname(string clientname) + [HttpGet("{clientguid}")] + public async Task Clientguid(string clientguid) { - + long decimalNetworkId = clientguid.ConvertGuidToLong(System.Globalization.NumberStyles.Integer); var clientInfo = Manager.GetActiveClients() - .FirstOrDefault(c => c.Name == clientname); + .FirstOrDefault(c => c.NetworkId == decimalNetworkId); if (clientInfo != null) { @@ -68,6 +71,86 @@ namespace WebfrontCore.Controllers.API break; } + customRankName = await _metaService.GetPersistentMeta("rank", clientInfo); + if (customRankName == null) + { + await _metaService.AddPersistentMeta("rank", "none", clientInfo); + customRankName = await _metaService.GetPersistentMeta("rank", clientInfo); + } + + if (!(customRankName.Value.Contains("none")) && !(customRankName.Value.Contains("None")) && !(customRankName.Value.Contains("NONE"))) + { + rankName = customRankName.Value; + + } + + var sb = new StringBuilder(); + sb.AppendLine(rankName); + + return Content(sb.ToString()); + } + + return Content("Error: Client info is null"); + } + [HttpGet("{clientname}")] + public async Task Clientname(string clientname) + { + + var clientInfo = Manager.GetActiveClients() + .FirstOrDefault(c => c.Name == clientname); + + + if (clientInfo != null) + { + + switch ((int)clientInfo.Level) + { + case -1: + rankName = "Banned"; //this typically won't be seen. + break; + case 0: + rankName = "User"; + break; + case 1: + rankName = "User"; //1 = flagged, but don't want to show this in game. + break; + case 2: + rankName = "Trusted"; + break; + case 3: + rankName = "Mod"; + break; + case 4: + rankName = "Admin"; + break; + case 5: + rankName = "SrAdmin"; + break; + case 6: + rankName = "Owner"; + break; + case 7: + rankName = "Creator"; + break; + case 8: + rankName = "Console"; + break; + default: + break; + } + + customRankName = await _metaService.GetPersistentMeta("rank", clientInfo); + if (customRankName == null) + { + await _metaService.AddPersistentMeta("rank", "none", clientInfo); + customRankName = await _metaService.GetPersistentMeta("rank", clientInfo); + } + + if (!(customRankName.Value.Contains("none")) || !(customRankName.Value.Contains("None")) || !(customRankName.Value.Contains("NONE"))) + { + rankName = customRankName.Value; + + } var sb = new StringBuilder(); sb.AppendLine(rankName); diff --git a/Plugin.cs b/Plugin.cs index 437e6b6..f9acac3 100644 --- a/Plugin.cs +++ b/Plugin.cs @@ -16,13 +16,13 @@ namespace ClanTagRankApi public string Name => "ClanTagRankApi"; - public float Version => 1.01f; + public float Version => 1.1f; public string Author => "INSANEMODE"; private readonly IMetaService _metaService; - public Plugin(IMetaService metaService, IConfigurationHandlerFactory configurationHandlerFactory) + public Plugin(IMetaService metaService, IConfigurationHandlerFactory configurationHandlerFactory) { _metaService = metaService; _configurationHandler = (IConfigurationHandler)configurationHandlerFactory.GetConfigurationHandler("ClanTagRankApi");