LocalizationService.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. using MediaBrowser.Controller.Localization;
  2. using MediaBrowser.Model.Entities;
  3. using MediaBrowser.Model.Globalization;
  4. using MediaBrowser.Server.Implementations.HttpServer;
  5. using MoreLinq;
  6. using ServiceStack.ServiceHost;
  7. using System.Collections.Generic;
  8. using System.Globalization;
  9. using System.Linq;
  10. namespace MediaBrowser.Api
  11. {
  12. /// <summary>
  13. /// Class GetCultures
  14. /// </summary>
  15. [Route("/Localization/Cultures", "GET")]
  16. [ServiceStack.ServiceHost.Api(Description = "Gets known cultures")]
  17. public class GetCultures : IReturn<List<CultureDto>>
  18. {
  19. }
  20. /// <summary>
  21. /// Class GetCountries
  22. /// </summary>
  23. [Route("/Localization/Countries", "GET")]
  24. [ServiceStack.ServiceHost.Api(Description = "Gets known countries")]
  25. public class GetCountries : IReturn<List<CountryInfo>>
  26. {
  27. }
  28. /// <summary>
  29. /// Class ParentalRatings
  30. /// </summary>
  31. [Route("/Localization/ParentalRatings", "GET")]
  32. [ServiceStack.ServiceHost.Api(Description = "Gets known parental ratings")]
  33. public class GetParentalRatings : IReturn<List<ParentalRating>>
  34. {
  35. }
  36. /// <summary>
  37. /// Class CulturesService
  38. /// </summary>
  39. public class LocalizationService : BaseRestService
  40. {
  41. /// <summary>
  42. /// Gets the specified request.
  43. /// </summary>
  44. /// <param name="request">The request.</param>
  45. /// <returns>System.Object.</returns>
  46. public object Get(GetParentalRatings request)
  47. {
  48. var ratings =
  49. Ratings.RatingsDict.Select(k => new ParentalRating { Name = k.Key, Value = k.Value });
  50. var result = ratings.OrderBy(p => p.Value).Where(p => p.Value > 0).ToList();
  51. return ToOptimizedResult(result);
  52. }
  53. /// <summary>
  54. /// Gets the specified request.
  55. /// </summary>
  56. /// <param name="request">The request.</param>
  57. /// <returns>System.Object.</returns>
  58. public object Get(GetCountries request)
  59. {
  60. var result = CultureInfo.GetCultures(CultureTypes.SpecificCultures)
  61. .Select(c => new RegionInfo(c.LCID))
  62. .OrderBy(c => c.DisplayName)
  63. // Try to eliminate dupes
  64. .DistinctBy(c => c.TwoLetterISORegionName)
  65. .Select(c => new CountryInfo
  66. {
  67. Name = c.Name,
  68. DisplayName = c.DisplayName,
  69. TwoLetterISORegionName = c.TwoLetterISORegionName,
  70. ThreeLetterISORegionName = c.ThreeLetterISORegionName
  71. })
  72. .ToList();
  73. return ToOptimizedResult(result);
  74. }
  75. /// <summary>
  76. /// Gets the specified request.
  77. /// </summary>
  78. /// <param name="request">The request.</param>
  79. /// <returns>System.Object.</returns>
  80. public object Get(GetCultures request)
  81. {
  82. var result = CultureInfo.GetCultures(CultureTypes.AllCultures)
  83. .OrderBy(c => c.DisplayName)
  84. // Try to eliminate dupes
  85. .DistinctBy(c => c.TwoLetterISOLanguageName + c.ThreeLetterISOLanguageName)
  86. .Select(c => new CultureDto
  87. {
  88. Name = c.Name,
  89. DisplayName = c.DisplayName,
  90. ThreeLetterISOLanguageName = c.ThreeLetterISOLanguageName,
  91. TwoLetterISOLanguageName = c.TwoLetterISOLanguageName
  92. })
  93. .ToList();
  94. return ToOptimizedResult(result);
  95. }
  96. }
  97. }