using MediaBrowser.Controller.Localization; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Globalization; using MediaBrowser.Server.Implementations.HttpServer; using MoreLinq; using ServiceStack.ServiceHost; using System.Collections.Generic; using System.Globalization; using System.Linq; namespace MediaBrowser.Api { /// /// Class GetCultures /// [Route("/Localization/Cultures", "GET")] [ServiceStack.ServiceHost.Api(Description = "Gets known cultures")] public class GetCultures : IReturn> { } /// /// Class GetCountries /// [Route("/Localization/Countries", "GET")] [ServiceStack.ServiceHost.Api(Description = "Gets known countries")] public class GetCountries : IReturn> { } /// /// Class ParentalRatings /// [Route("/Localization/ParentalRatings", "GET")] [ServiceStack.ServiceHost.Api(Description = "Gets known parental ratings")] public class GetParentalRatings : IReturn> { } /// /// Class CulturesService /// public class LocalizationService : BaseRestService { /// /// Gets the specified request. /// /// The request. /// System.Object. public object Get(GetParentalRatings request) { var ratings = Ratings.RatingsDict.Select(k => new ParentalRating { Name = k.Key, Value = k.Value }); var result = ratings.OrderBy(p => p.Value).Where(p => p.Value > 0).ToList(); return ToOptimizedResult(result); } /// /// Gets the specified request. /// /// The request. /// System.Object. public object Get(GetCountries request) { var result = CultureInfo.GetCultures(CultureTypes.SpecificCultures) .Select(c => new RegionInfo(c.LCID)) .OrderBy(c => c.DisplayName) // Try to eliminate dupes .DistinctBy(c => c.TwoLetterISORegionName) .Select(c => new CountryInfo { Name = c.Name, DisplayName = c.DisplayName, TwoLetterISORegionName = c.TwoLetterISORegionName, ThreeLetterISORegionName = c.ThreeLetterISORegionName }) .ToList(); return ToOptimizedResult(result); } /// /// Gets the specified request. /// /// The request. /// System.Object. public object Get(GetCultures request) { var result = CultureInfo.GetCultures(CultureTypes.AllCultures) .OrderBy(c => c.DisplayName) // Try to eliminate dupes .DistinctBy(c => c.TwoLetterISOLanguageName + c.ThreeLetterISOLanguageName) .Select(c => new CultureDto { Name = c.Name, DisplayName = c.DisplayName, ThreeLetterISOLanguageName = c.ThreeLetterISOLanguageName, TwoLetterISOLanguageName = c.TwoLetterISOLanguageName }) .ToList(); return ToOptimizedResult(result); } } }