From d88c967023f0500b24aa6ff4b5d899cc284c03ab Mon Sep 17 00:00:00 2001 From: CodeDevMLH <145071728+CodeDevMLH@users.noreply.github.com> Date: Mon, 15 Dec 2025 11:27:06 +0100 Subject: [PATCH] test 6 --- .../Api/SeasonalsController.cs | 16 +++- .../Configuration/configPage.html | 1 + .../Jellyfin.Plugin.Seasonals.csproj | 7 +- Jellyfin.Plugin.Seasonals/ScriptInjector.cs | 84 +++++++++--------- .../Jellyfin.Plugin.Seasonals.deps.json | 41 +-------- .../net9.0/Jellyfin.Plugin.Seasonals.dll | Bin 908288 -> 908800 bytes .../net9.0/Jellyfin.Plugin.Seasonals.pdb | Bin 23760 -> 23732 bytes .../net9.0/Jellyfin.Plugin.Seasonals.xml | 46 ++++++++++ RELEASE_GUIDE.md | 59 ++++++++++++ .../Jellyfin.Plugin.Seasonals.deps.json | 41 +-------- bin/Publish/Jellyfin.Plugin.Seasonals.dll | Bin 908288 -> 908800 bytes bin/Publish/Jellyfin.Plugin.Seasonals.pdb | Bin 23760 -> 23732 bytes bin/Publish/Jellyfin.Plugin.Seasonals.xml | 46 ++++++++++ bin/Publish/Jellyfin.Plugin.Seasonals.zip | Bin 787039 -> 786892 bytes manifest.json | 4 +- 15 files changed, 215 insertions(+), 130 deletions(-) create mode 100644 RELEASE_GUIDE.md diff --git a/Jellyfin.Plugin.Seasonals/Api/SeasonalsController.cs b/Jellyfin.Plugin.Seasonals/Api/SeasonalsController.cs index 4d4e7ea..df1343f 100644 --- a/Jellyfin.Plugin.Seasonals/Api/SeasonalsController.cs +++ b/Jellyfin.Plugin.Seasonals/Api/SeasonalsController.cs @@ -6,10 +6,17 @@ using Microsoft.AspNetCore.Mvc; namespace Jellyfin.Plugin.Seasonals.Api; +/// +/// Controller for serving seasonal resources and configuration. +/// [ApiController] [Route("Seasonals")] public class SeasonalsController : ControllerBase { + /// + /// Gets the current plugin configuration. + /// + /// The configuration object. [HttpGet("Config")] [Produces("application/json")] public ActionResult GetConfig() @@ -22,11 +29,16 @@ public class SeasonalsController : ControllerBase }; } + /// + /// Serves embedded resources. + /// + /// The path to the resource. + /// The resource file. [HttpGet("Resources/{*path}")] public ActionResult GetResource(string path) { // Sanitize path - if (string.IsNullOrWhiteSpace(path) || path.Contains("..")) + if (string.IsNullOrWhiteSpace(path) || path.Contains("..", StringComparison.Ordinal)) { return BadRequest(); } @@ -47,7 +59,7 @@ public class SeasonalsController : ControllerBase return File(stream, contentType); } - private string GetContentType(string path) + private static string GetContentType(string path) { if (path.EndsWith(".js", StringComparison.OrdinalIgnoreCase)) return "application/javascript"; if (path.EndsWith(".css", StringComparison.OrdinalIgnoreCase)) return "text/css"; diff --git a/Jellyfin.Plugin.Seasonals/Configuration/configPage.html b/Jellyfin.Plugin.Seasonals/Configuration/configPage.html index e975058..d6be848 100644 --- a/Jellyfin.Plugin.Seasonals/Configuration/configPage.html +++ b/Jellyfin.Plugin.Seasonals/Configuration/configPage.html @@ -37,6 +37,7 @@ Save + Please reload the page (F5) after saving for changes to take effect. diff --git a/Jellyfin.Plugin.Seasonals/Jellyfin.Plugin.Seasonals.csproj b/Jellyfin.Plugin.Seasonals/Jellyfin.Plugin.Seasonals.csproj index bd712cf..be06b21 100644 --- a/Jellyfin.Plugin.Seasonals/Jellyfin.Plugin.Seasonals.csproj +++ b/Jellyfin.Plugin.Seasonals/Jellyfin.Plugin.Seasonals.csproj @@ -13,6 +13,7 @@ CodeDevMLH CodeDevMLH Jellyfin Seasonals Plugin + 1.0.0.0 https://github.com/CodeDevMLH/jellyfin-plugin-seasonals https://github.com/CodeDevMLH/jellyfin-plugin-seasonals @@ -26,12 +27,6 @@ - - - - - - diff --git a/Jellyfin.Plugin.Seasonals/ScriptInjector.cs b/Jellyfin.Plugin.Seasonals/ScriptInjector.cs index f935a52..02feb5f 100644 --- a/Jellyfin.Plugin.Seasonals/ScriptInjector.cs +++ b/Jellyfin.Plugin.Seasonals/ScriptInjector.cs @@ -1,24 +1,35 @@ -using System; +using System; using System.IO; -using System.Linq; +using System.Reflection; using Microsoft.Extensions.Logging; using MediaBrowser.Common.Configuration; namespace Jellyfin.Plugin.Seasonals; +/// +/// Handles the injection of the Seasonals script into the Jellyfin web interface. +/// public class ScriptInjector { private readonly IApplicationPaths _appPaths; private readonly ILogger _logger; - private const string ScriptTag = ""; + private const string ScriptTag = ""; private const string Marker = "