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