From efaa85a44f8d44c29a1a936bf35c5aff25d5edf6 Mon Sep 17 00:00:00 2001 From: Chomp Date: Sun, 12 Jan 2025 15:40:28 +0000 Subject: [PATCH] Expanded `ClientLogController` implementation --- Core/Controllers/ClientLogController.cs | 44 ++++++++++++++++++++- Core/Models/Spt/Logging/ClientLogRequest.cs | 7 ++-- 2 files changed, 47 insertions(+), 4 deletions(-) diff --git a/Core/Controllers/ClientLogController.cs b/Core/Controllers/ClientLogController.cs index 4c12f13c..eb73c1cc 100644 --- a/Core/Controllers/ClientLogController.cs +++ b/Core/Controllers/ClientLogController.cs @@ -1,17 +1,59 @@ using Core.Annotations; +using Core.Models.Logging; using Core.Models.Spt.Logging; +using ILogger = Core.Models.Utils.ILogger; +using LogLevel = Core.Models.Spt.Logging.LogLevel; namespace Core.Controllers; [Injectable] public class ClientLogController { + private readonly ILogger _logger; + + public ClientLogController( + ILogger logger) + { + _logger = logger; + } + /// /// Handle /singleplayer/log /// /// public void ClientLog(ClientLogRequest logRequest) { - throw new NotImplementedException(); + var message = $"[{logRequest.Source}] {logRequest.Message}"; + var color = logRequest.Color ?? LogTextColor.White; + var backgroundColor = logRequest.BackgroundColor ?? LogBackgroundColor.Default; + + + // Allow supporting either string or enum levels + // Required due to the C# modules serializing enums as their name + + switch (logRequest.Level) + { + case LogLevel.ERROR: + this._logger.Error(message); + break; + case LogLevel.WARN: + this._logger.Warning(message); + break; + case LogLevel.SUCCESS: + this._logger.Success(message); + break; + case LogLevel.INFO: + this._logger.Info(message); + break; + case LogLevel.CUSTOM: + this._logger.Log(message, color.ToString(), backgroundColor.ToString()); + break; + case LogLevel.DEBUG: + this._logger.Debug(message); + break; + default: + this._logger.Info(message); + break; + } } } diff --git a/Core/Models/Spt/Logging/ClientLogRequest.cs b/Core/Models/Spt/Logging/ClientLogRequest.cs index 0d54edc3..a641d3ff 100644 --- a/Core/Models/Spt/Logging/ClientLogRequest.cs +++ b/Core/Models/Spt/Logging/ClientLogRequest.cs @@ -1,4 +1,5 @@ -using System.Text.Json.Serialization; +using System.Text.Json.Serialization; +using Core.Models.Logging; using Core.Models.Utils; namespace Core.Models.Spt.Logging; @@ -15,8 +16,8 @@ public class ClientLogRequest : IRequestData public string? Message { get; set; } [JsonPropertyName("Color")] - public string? Color { get; set; } + public LogTextColor? Color { get; set; } [JsonPropertyName("BackgroundColor")] - public string? BackgroundColor { get; set; } + public LogBackgroundColor? BackgroundColor { get; set; } }