UserDtoBuilder.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using MediaBrowser.Controller.Entities;
  2. using MediaBrowser.Model.Dto;
  3. using MediaBrowser.Model.Entities;
  4. using MediaBrowser.Model.Logging;
  5. using System;
  6. using System.Threading.Tasks;
  7. namespace MediaBrowser.Controller.Dto
  8. {
  9. /// <summary>
  10. /// Class UserDtoBuilder
  11. /// </summary>
  12. public class UserDtoBuilder
  13. {
  14. /// <summary>
  15. /// The _logger
  16. /// </summary>
  17. private readonly ILogger _logger;
  18. /// <summary>
  19. /// Initializes a new instance of the <see cref="UserDtoBuilder"/> class.
  20. /// </summary>
  21. /// <param name="logger">The logger.</param>
  22. public UserDtoBuilder(ILogger logger)
  23. {
  24. _logger = logger;
  25. }
  26. /// <summary>
  27. /// Converts a User to a DTOUser
  28. /// </summary>
  29. /// <param name="user">The user.</param>
  30. /// <returns>DtoUser.</returns>
  31. /// <exception cref="System.ArgumentNullException">user</exception>
  32. public async Task<UserDto> GetUserDto(User user)
  33. {
  34. if (user == null)
  35. {
  36. throw new ArgumentNullException("user");
  37. }
  38. var dto = new UserDto
  39. {
  40. Id = user.Id.ToString("N"),
  41. Name = user.Name,
  42. HasPassword = !String.IsNullOrEmpty(user.Password),
  43. LastActivityDate = user.LastActivityDate,
  44. LastLoginDate = user.LastLoginDate,
  45. Configuration = user.Configuration
  46. };
  47. var image = user.PrimaryImagePath;
  48. if (!string.IsNullOrEmpty(image))
  49. {
  50. dto.PrimaryImageTag = Kernel.Instance.ImageManager.GetImageCacheTag(user, ImageType.Primary, image);
  51. try
  52. {
  53. await DtoBuilder.AttachPrimaryImageAspectRatio(dto, user, _logger).ConfigureAwait(false);
  54. }
  55. catch (Exception ex)
  56. {
  57. // Have to use a catch-all unfortunately because some .net image methods throw plain Exceptions
  58. _logger.ErrorException("Error generating PrimaryImageAspectRatio for {0}", ex, user.Name);
  59. }
  60. }
  61. return dto;
  62. }
  63. }
  64. }