From 8e193c079f033de4e33412e5cbed7728e03e3ac1 Mon Sep 17 00:00:00 2001 From: jvyden Date: Thu, 4 Nov 2021 14:28:50 -0400 Subject: [PATCH] Cleanup code --- .../Tests/AuthenticationTests.cs | 2 +- ProjectLighthouse.sln.DotSettings | 1 + .../Controllers/ScoreController.cs | 66 ++++++++++++------- .../Helpers/Extensions/StringExtensions.cs | 7 +- .../Logging/LighthouseFileLogger.cs | 2 +- ProjectLighthouse/ProjectLighthouse.csproj | 12 ++-- .../Serialization/LbpSerializer.cs | 4 +- ProjectLighthouse/Types/Score.cs | 6 +- 8 files changed, 58 insertions(+), 42 deletions(-) diff --git a/ProjectLighthouse.Tests/Tests/AuthenticationTests.cs b/ProjectLighthouse.Tests/Tests/AuthenticationTests.cs index a996612b..893648e0 100644 --- a/ProjectLighthouse.Tests/Tests/AuthenticationTests.cs +++ b/ProjectLighthouse.Tests/Tests/AuthenticationTests.cs @@ -12,7 +12,7 @@ namespace LBPUnion.ProjectLighthouse.Tests [Fact] public async Task ShouldReturnErrorOnNoPostData() { - HttpResponseMessage response = await this.Client.PostAsync($"/LITTLEBIGPLANETPS3_XML/login", null!); + HttpResponseMessage response = await this.Client.PostAsync("/LITTLEBIGPLANETPS3_XML/login", null!); Assert.False(response.IsSuccessStatusCode); #if NET6_0_OR_GREATER Assert.True(response.StatusCode == HttpStatusCode.BadRequest); diff --git a/ProjectLighthouse.sln.DotSettings b/ProjectLighthouse.sln.DotSettings index 9035b5a5..9bfc9063 100644 --- a/ProjectLighthouse.sln.DotSettings +++ b/ProjectLighthouse.sln.DotSettings @@ -103,6 +103,7 @@ True True True + True True True True diff --git a/ProjectLighthouse/Controllers/ScoreController.cs b/ProjectLighthouse/Controllers/ScoreController.cs index 71d41b2d..90a710ee 100644 --- a/ProjectLighthouse/Controllers/ScoreController.cs +++ b/ProjectLighthouse/Controllers/ScoreController.cs @@ -1,11 +1,12 @@ using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; -using System.Collections.Generic; using System.Threading.Tasks; using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Types; using LBPUnion.ProjectLighthouse.Serialization; +using LBPUnion.ProjectLighthouse.Types; using Microsoft.AspNetCore.Mvc; namespace LBPUnion.ProjectLighthouse.Controllers @@ -38,7 +39,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers if (existingScore.Any()) { - Score first = existingScore.FirstOrDefault(s => s.SlotId == score.SlotId); + Score first = existingScore.First(s => s.SlotId == score.SlotId); score.ScoreId = first.ScoreId; score.Points = Math.Max(first.Points, score.Points); this.database.Entry(first).CurrentValues.SetValues(score); @@ -53,6 +54,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers } [HttpGet("topscores/user/{slotId:int}/{type:int}")] + [SuppressMessage("ReSharper", "PossibleMultipleEnumeration")] public async Task TopScores(int slotId, int type, [FromQuery] int pageStart, [FromQuery] int pageSize) { // Get username @@ -60,42 +62,62 @@ namespace LBPUnion.ProjectLighthouse.Controllers // This is hella ugly but it technically assigns the proper rank to a score // var needed for Anonymous type returned from SELECT - var rankedScores = this.database.Scores - .Where(s => s.SlotId == slotId && s.Type == type) + var rankedScores = this.database.Scores.Where(s => s.SlotId == slotId && s.Type == type) .OrderByDescending(s => s.Points) .ToList() - .Select((Score s, int rank) => new { Score = s, Rank = rank + 1 }); + .Select + ( + (Score s, int rank) => new + { + Score = s, + Rank = rank + 1, + } + ); // Find your score, since even if you aren't in the top list your score is pinned - var myScore = rankedScores - .Where(rs => rs.Score.PlayerIdCollection.Contains(user.Username)) + var myScore = rankedScores.Where + (rs => rs.Score.PlayerIdCollection.Contains(user.Username)) .OrderByDescending(rs => rs.Score.Points) .FirstOrDefault(); // Paginated viewing - var pagedScores = rankedScores - .Skip(pageStart - 1) - .Take(Math.Min(pageSize, 30)); + var pagedScores = rankedScores.Skip(pageStart - 1).Take(Math.Min(pageSize, 30)); - string serializedScores = Enumerable.Aggregate(pagedScores, string.Empty, (current, rs) => { - rs.Score.Rank = rs.Rank; - return current + rs.Score.Serialize(); - }); + string serializedScores = pagedScores.Aggregate + ( + string.Empty, + (current, rs) => + { + rs.Score.Rank = rs.Rank; + return current + rs.Score.Serialize(); + } + ); string res; if (myScore == null) { res = LbpSerializer.StringElement("scores", serializedScores); - } + } else { - res = LbpSerializer.TaggedStringElement("scores", serializedScores, new Dictionary() { - {"yourScore", myScore.Score.Points}, - {"yourRank", myScore.Rank }, //This is the numerator of your position globally in the side menu. - {"totalNumScores", rankedScores.Count() } // This is the denominator of your position globally in the side menu. - }); + res = LbpSerializer.TaggedStringElement + ( + "scores", + serializedScores, + new Dictionary() + { + { + "yourScore", myScore.Score.Points + }, + { + "yourRank", myScore.Rank + }, //This is the numerator of your position globally in the side menu. + { + "totalNumScores", rankedScores.Count() + }, // This is the denominator of your position globally in the side menu. + } + ); } - return this.Ok(res); } diff --git a/ProjectLighthouse/Helpers/Extensions/StringExtensions.cs b/ProjectLighthouse/Helpers/Extensions/StringExtensions.cs index 4ed898e9..177027de 100644 --- a/ProjectLighthouse/Helpers/Extensions/StringExtensions.cs +++ b/ProjectLighthouse/Helpers/Extensions/StringExtensions.cs @@ -8,11 +8,8 @@ namespace LBPUnion.ProjectLighthouse.Helpers.Extensions { char[] invalidPathChars = Path.GetInvalidFileNameChars(); string path = text; - - foreach (char c in invalidPathChars) - { - path = path.Replace(c.ToString(), ""); - } + + foreach (char c in invalidPathChars) path = path.Replace(c.ToString(), ""); return path; } diff --git a/ProjectLighthouse/Logging/LighthouseFileLogger.cs b/ProjectLighthouse/Logging/LighthouseFileLogger.cs index 31879a69..4b0e08a4 100644 --- a/ProjectLighthouse/Logging/LighthouseFileLogger.cs +++ b/ProjectLighthouse/Logging/LighthouseFileLogger.cs @@ -9,6 +9,7 @@ namespace LBPUnion.ProjectLighthouse.Logging public class LighthouseFileLogger : LoggerBase { private static readonly string logsDirectory = Path.Combine(Environment.CurrentDirectory, "logs"); + public override bool AllowMultiple => false; public override void Send(LoggerLine line) { @@ -22,6 +23,5 @@ namespace LBPUnion.ProjectLighthouse.Logging File.AppendAllText(Path.Combine(logsDirectory, line.LoggerLevel.Name.ToFileName() + ".log"), contentFile); File.AppendAllText(Path.Combine(logsDirectory, "all.log"), contentAll); } - public override bool AllowMultiple => false; } } \ No newline at end of file diff --git a/ProjectLighthouse/ProjectLighthouse.csproj b/ProjectLighthouse/ProjectLighthouse.csproj index 64127ba0..37dc28d0 100644 --- a/ProjectLighthouse/ProjectLighthouse.csproj +++ b/ProjectLighthouse/ProjectLighthouse.csproj @@ -8,19 +8,19 @@ - - - - + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + - + diff --git a/ProjectLighthouse/Serialization/LbpSerializer.cs b/ProjectLighthouse/Serialization/LbpSerializer.cs index 29fc17fd..cfa64535 100644 --- a/ProjectLighthouse/Serialization/LbpSerializer.cs +++ b/ProjectLighthouse/Serialization/LbpSerializer.cs @@ -27,9 +27,7 @@ namespace LBPUnion.ProjectLighthouse.Serialization public static string TaggedStringElement(string key, object value, string tagKey, object tagValue) => $"<{key} {tagKey}=\"{tagValue}\">{value}"; public static string TaggedStringElement(string key, object value, Dictionary attrKeyValuePairs) - => $"<{key} " + - Enumerable.Aggregate(attrKeyValuePairs, string.Empty, (current, kvp) => current + $"{kvp.Key}=\"{kvp.Value}\" ") + - $">{value}"; + => $"<{key} " + attrKeyValuePairs.Aggregate(string.Empty, (current, kvp) => current + $"{kvp.Key}=\"{kvp.Value}\" ") + $">{value}"; public static string Elements (params KeyValuePair[] pairs) diff --git a/ProjectLighthouse/Types/Score.cs b/ProjectLighthouse/Types/Score.cs index 341f4e3b..6b507e6f 100644 --- a/ProjectLighthouse/Types/Score.cs +++ b/ProjectLighthouse/Types/Score.cs @@ -29,16 +29,14 @@ namespace LBPUnion.ProjectLighthouse.Types [NotMapped] [XmlElement("playerIds")] - public string[] PlayerIds - { + public string[] PlayerIds { get => this.PlayerIdCollection.Split(","); set => this.PlayerIdCollection = string.Join(',', value); } [NotMapped] [XmlElement("mainPlayer")] - public string MainPlayer - { + public string MainPlayer { get => this.PlayerIds[0]; set => this.PlayerIds[0] = value; }