LocalizationService.cs 3.4 KB

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