From 236978a9b13bf3f965cb15fe3a67019fed640cec Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Sat, 14 Feb 2026 12:13:51 -0800 Subject: [PATCH] Add v5 Language endpoints --- .../Localization/LanguageController.cs | 35 +++++++++++++++++++ .../Localization/LanguageResource.cs | 12 +++++++ 2 files changed, 47 insertions(+) create mode 100644 src/Sonarr.Api.V5/Localization/LanguageController.cs create mode 100644 src/Sonarr.Api.V5/Localization/LanguageResource.cs diff --git a/src/Sonarr.Api.V5/Localization/LanguageController.cs b/src/Sonarr.Api.V5/Localization/LanguageController.cs new file mode 100644 index 000000000..ea010585b --- /dev/null +++ b/src/Sonarr.Api.V5/Localization/LanguageController.cs @@ -0,0 +1,35 @@ +using Microsoft.AspNetCore.Mvc; +using NzbDrone.Core.Languages; +using Sonarr.Http; +using Sonarr.Http.REST; + +namespace Sonarr.Api.V5.Localization; + +[V5ApiController] +public class LanguageController : RestController +{ + protected override LanguageResource GetResourceById(int id) + { + var language = (Language)id; + + return new LanguageResource + { + Id = (int)language, + Name = language.ToString() + }; + } + + [HttpGet] + public List GetAll() + { + var languageResources = Language.All.Select(l => new LanguageResource + { + Id = (int)l, + Name = l.ToString() + }) + .OrderBy(l => l.Id > 0).ThenBy(l => l.Name) + .ToList(); + + return languageResources; + } +} diff --git a/src/Sonarr.Api.V5/Localization/LanguageResource.cs b/src/Sonarr.Api.V5/Localization/LanguageResource.cs new file mode 100644 index 000000000..1b3719b76 --- /dev/null +++ b/src/Sonarr.Api.V5/Localization/LanguageResource.cs @@ -0,0 +1,12 @@ +using System.Text.Json.Serialization; +using Sonarr.Http.REST; + +namespace Sonarr.Api.V5.Localization; + +public class LanguageResource : RestResource +{ + [JsonIgnore(Condition = JsonIgnoreCondition.Never)] + public new int Id { get; set; } + public string? Name { get; set; } + public string? NameLower => Name?.ToLowerInvariant(); +}