From e1e5a459606c5b116878c92b1583aaddaf4b08bd Mon Sep 17 00:00:00 2001 From: Glax Date: Fri, 7 Mar 2025 13:06:01 +0100 Subject: [PATCH] Implement SettingsController --- API/Controllers/SettingsController.cs | 97 +++++++++++++++------------ 1 file changed, 54 insertions(+), 43 deletions(-) diff --git a/API/Controllers/SettingsController.cs b/API/Controllers/SettingsController.cs index c7f8d02..2906fcb 100644 --- a/API/Controllers/SettingsController.cs +++ b/API/Controllers/SettingsController.cs @@ -1,4 +1,6 @@ -using API.Schema; +using System.Text.Json.Nodes; +using API.MangaDownloadClients; +using API.Schema; using Asp.Versioning; using Microsoft.AspNetCore.Mvc; using static Microsoft.AspNetCore.Http.StatusCodes; @@ -14,136 +16,144 @@ public class SettingsController(PgsqlContext context) : Controller /// /// Get all Settings /// - /// + /// [HttpGet] - [ProducesResponseType(Status500InternalServerError)] + [ProducesResponseType(StatusCodes.Status200OK)] public IActionResult GetSettings() { - return StatusCode(500, "Not implemented"); //TODO + return Ok(TrangaSettings.Serialize()); } /// /// Get the current UserAgent used by Tranga /// - /// UserAgent as string + /// [HttpGet("UserAgent")] - [ProducesResponseType(Status500InternalServerError)] + [ProducesResponseType(Status200OK)] public IActionResult GetUserAgent() { - return StatusCode(500, "Not implemented"); //TODO + return Ok(TrangaSettings.userAgent); } /// /// Set a new UserAgent /// - /// Nothing + /// [HttpPatch("UserAgent")] - [ProducesResponseType(Status500InternalServerError)] - public IActionResult SetUserAgent() + [ProducesResponseType(Status200OK)] + public IActionResult SetUserAgent([FromBody]string userAgent) { - return StatusCode(500, "Not implemented"); //TODO + TrangaSettings.UpdateUserAgent(userAgent); + return Ok(); } /// /// Reset the UserAgent to default /// - /// Nothing + /// [HttpDelete("UserAgent")] - [ProducesResponseType(Status500InternalServerError)] + [ProducesResponseType(Status200OK)] public IActionResult ResetUserAgent() { - return StatusCode(500, "Not implemented"); //TODO + TrangaSettings.UpdateUserAgent(TrangaSettings.DefaultUserAgent); + return Ok(); } /// /// Get all Request-Limits /// - /// + /// [HttpGet("RequestLimits")] - [ProducesResponseType(Status500InternalServerError)] + [ProducesResponseType>(Status200OK)] public IActionResult GetRequestLimits() { - return StatusCode(500, "Not implemented"); //TODO + return Ok(TrangaSettings.requestLimits); } /// /// Update all Request-Limits to new values /// - /// Nothing + /// NOT IMPLEMENTED [HttpPatch("RequestLimits")] - [ProducesResponseType(Status500InternalServerError)] public IActionResult SetRequestLimits() { - return StatusCode(500, "Not implemented"); //TODO + throw new NotImplementedException(); } /// /// Reset all Request-Limits /// - /// Nothing + /// [HttpDelete("RequestLimits")] - [ProducesResponseType(Status500InternalServerError)] + [ProducesResponseType(Status200OK)] public IActionResult ResetRequestLimits() { - return StatusCode(500, "Not implemented"); //TODO + TrangaSettings.ResetRequestLimits(); + return Ok(); } /// /// Returns Level of Image-Compression for Images /// - /// + /// JPEG compression-level as Integer [HttpGet("ImageCompression")] - [ProducesResponseType(Status500InternalServerError)] + [ProducesResponseType(Status200OK)] public IActionResult GetImageCompression() { - return StatusCode(500, "Not implemented"); //TODO + return Ok(TrangaSettings.compression); } /// /// Set the Image-Compression-Level for Images /// - /// 100 to disable, 0-99 for JPEG compression-Level - /// Nothing + /// 100 to disable, 0-99 for JPEG compression-Level + /// + /// Level outside permitted range [HttpPatch("ImageCompression")] - [ProducesResponseType(Status500InternalServerError)] - public IActionResult SetImageCompression(int percentage) + [ProducesResponseType(Status200OK)] + [ProducesResponseType(Status400BadRequest)] + public IActionResult SetImageCompression(int level) { - return StatusCode(500, "Not implemented"); //TODO + if (level < 0 || level > 100) + return BadRequest(); + TrangaSettings.UpdateCompressImages(level); + return Ok(); } /// /// Get state of Black/White-Image setting /// - /// True if enabled + /// True if enabled [HttpGet("BWImages")] - [ProducesResponseType(Status500InternalServerError)] + [ProducesResponseType(Status200OK)] public IActionResult GetBwImagesToggle() { - return StatusCode(500, "Not implemented"); //TODO + return Ok(TrangaSettings.bwImages); } /// /// Enable/Disable conversion of Images to Black and White /// /// true to enable - /// Nothing + /// [HttpPatch("BWImages")] - [ProducesResponseType(Status500InternalServerError)] + [ProducesResponseType(Status200OK)] public IActionResult SetBwImagesToggle(bool enabled) { - return StatusCode(500, "Not implemented"); //TODO + TrangaSettings.UpdateBwImages(enabled); + return Ok(); } /// /// Get state of April Fools Mode /// /// April Fools Mode disables all downloads on April 1st - /// True if enabled + /// True if enabled [HttpGet("AprilFoolsMode")] - [ProducesResponseType(Status500InternalServerError)] + [ProducesResponseType(Status200OK)] public IActionResult GetAprilFoolsMode() { - return StatusCode(500, "Not implemented"); //TODO + return Ok(TrangaSettings.aprilFoolsMode); } /// @@ -151,11 +161,12 @@ public class SettingsController(PgsqlContext context) : Controller /// /// April Fools Mode disables all downloads on April 1st /// true to enable - /// Nothing + /// [HttpPatch("AprilFoolsMode")] - [ProducesResponseType(Status500InternalServerError)] + [ProducesResponseType(Status200OK)] public IActionResult SetAprilFoolsMode(bool enabled) { - return StatusCode(500, "Not implemented"); //TODO + TrangaSettings.UpdateAprilFoolsMode(enabled); + return Ok(); } } \ No newline at end of file