using System;
using System.Collections.Generic;
using System.Linq;
using MediaBrowser.Common.Api;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Globalization;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace Jellyfin.Api.Controllers;
///
/// Localization controller.
///
[Authorize(Policy = Policies.FirstTimeSetupOrDefault)]
public class LocalizationController : BaseJellyfinApiController
{
private readonly ILocalizationManager _localization;
///
/// Initializes a new instance of the class.
///
/// Instance of the interface.
public LocalizationController(ILocalizationManager localization)
{
_localization = localization;
}
///
/// Gets known cultures.
///
/// Known cultures returned.
/// An containing the list of cultures.
[HttpGet("Cultures")]
[ProducesResponseType(StatusCodes.Status200OK)]
public ActionResult> GetCultures()
{
var allCultures = _localization.GetCultures();
var distinctCultures = allCultures
.DistinctBy(c => c.DisplayName, StringComparer.OrdinalIgnoreCase)
.OrderBy(c => c.DisplayName)
.AsEnumerable();
return Ok(distinctCultures);
}
///
/// Gets known countries.
///
/// Known countries returned.
/// An containing the list of countries.
[HttpGet("Countries")]
[ProducesResponseType(StatusCodes.Status200OK)]
public ActionResult> GetCountries()
{
return Ok(_localization.GetCountries());
}
///
/// Gets known parental ratings.
///
/// Known parental ratings returned.
/// An containing the list of parental ratings.
[HttpGet("ParentalRatings")]
[ProducesResponseType(StatusCodes.Status200OK)]
public ActionResult> GetParentalRatings()
{
return Ok(_localization.GetParentalRatings());
}
///
/// Gets localization options.
///
/// Localization options returned.
/// An containing the list of localization options.
[HttpGet("Options")]
[ProducesResponseType(StatusCodes.Status200OK)]
public ActionResult> GetLocalizationOptions()
{
return Ok(_localization.GetLocalizationOptions());
}
}