Beispiel #1
0
        private void SetUserProperties(IHasUserData item, MediaSourceInfo source, User user)
        {
            var userData = item == null ? new UserItemData() : _userDataManager.GetUserData(user.Id, item.GetUserDataKey());

            SetDefaultAudioStreamIndex(source, userData, user);
            SetDefaultSubtitleStreamIndex(source, userData, user);
        }
Beispiel #2
0
        public UserItemDataDto GetUserDataDto(IHasUserData item, BaseItemDto itemDto, User user, List <ItemFields> fields)
        {
            var userData = GetUserData(user.Id, item);
            var dto      = GetUserItemDataDto(userData);

            item.FillUserDataDtoValues(dto, userData, itemDto, user, fields);
            return(dto);
        }
Beispiel #3
0
        public UserItemDataDto GetUserDataDto(IHasUserData item, User user)
        {
            var userData = GetUserData(user.Id, item);
            var dto      = GetUserItemDataDto(userData);

            item.FillUserDataDtoValues(dto, userData, null, user, new List <ItemFields>());
            return(dto);
        }
Beispiel #4
0
        public async Task <UserItemDataDto> GetUserDataDto(IHasUserData item, BaseItemDto itemDto, User user)
        {
            var userData = GetUserData(user.Id, item);
            var dto      = GetUserItemDataDto(userData);

            await item.FillUserDataDtoValues(dto, userData, itemDto, user).ConfigureAwait(false);

            return(dto);
        }
        public UserItemDataDto GetUserDataDto(IHasUserData item, User user)
        {
            var userData = GetUserData(user.Id, item.GetUserDataKey());
            var dto      = GetUserItemDataDto(userData);

            item.FillUserDataDtoValues(dto, userData, user);

            return(dto);
        }
Beispiel #6
0
        private void SetUserProperties(IHasUserData item, MediaSourceInfo source, User user)
        {
            var userData = item == null ? new UserItemData() : _userDataManager.GetUserData(user, item);

            var allowRememberingSelection = item == null || item.EnableRememberingTrackSelections;

            SetDefaultAudioStreamIndex(source, userData, user, allowRememberingSelection);
            SetDefaultSubtitleStreamIndex(source, userData, user, allowRememberingSelection);
        }
Beispiel #7
0
        public async Task <UserItemDataDto> GetUserDataDto(IHasUserData item, User user)
        {
            var userData = GetUserData(user.Id, item);
            var dto      = GetUserItemDataDto(userData);

            await item.FillUserDataDtoValues(dto, userData, null, user, new List <ItemFields>()).ConfigureAwait(false);

            return(dto);
        }
Beispiel #8
0
        public UserData(IHasUserData data)
        {
            data.ThrowIfNull(nameof(data));

            Id        = data.Id;
            UserName  = data.UserName;
            Email     = data.Email;
            FirstName = data.FirstName;
            LastName  = data.LastName;
            Role      = data.Role;
        }
Beispiel #9
0
 private static List <Claim> CreateClaimsPrincipal(IHasUserData data)
 {
     return(new List <Claim>
     {
         new Claim(ClaimTypes.Role, data.Role.ToString()),
         new Claim(ClaimTypes.NameIdentifier, data.Id.ToString()),
         new Claim(ClaimTypes.Email, data.Email),
         new Claim(ClaimTypes.GivenName, data.FirstName),
         new Claim(ClaimTypes.Surname, data.LastName),
         new Claim(CustomClaimTypes.Username, data.UserName)
     });
 }
Beispiel #10
0
        public async Task SaveUserData(Guid userId, IHasUserData item, UserItemData userData, UserDataSaveReason reason, CancellationToken cancellationToken)
        {
            if (userData == null)
            {
                throw new ArgumentNullException("userData");
            }
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }
            if (userId == Guid.Empty)
            {
                throw new ArgumentNullException("userId");
            }

            cancellationToken.ThrowIfCancellationRequested();

            var keys = item.GetUserDataKeys();

            foreach (var key in keys)
            {
                try
                {
                    await Repository.SaveUserData(userId, key, userData, cancellationToken).ConfigureAwait(false);

                    var newValue = userData;

                    lock (_userData)
                    {
                        _userData[GetCacheKey(userId, key)] = newValue;
                    }
                }
                catch (Exception ex)
                {
                    _logger.ErrorException("Error saving user data", ex);

                    throw;
                }
            }

            EventHelper.FireEventIfNotNull(UserDataSaved, this, new UserDataSaveEventArgs
            {
                Keys = keys,
                UserData = userData,
                SaveReason = reason,
                UserId = userId,
                Item = item

            }, _logger);
        }
Beispiel #11
0
        /// <summary>
        /// Called when [playback start].
        /// </summary>
        /// <param name="userId">The user identifier.</param>
        /// <param name="userDataKey">The user data key.</param>
        /// <param name="item">The item.</param>
        /// <returns>Task.</returns>
        private async Task OnPlaybackStart(Guid userId, string userDataKey, IHasUserData item)
        {
            var data = _userDataRepository.GetUserData(userId, userDataKey);

            data.PlayCount++;
            data.LastPlayedDate = DateTime.UtcNow;

            if (!(item is Video))
            {
                data.Played = true;
            }

            await _userDataRepository.SaveUserData(userId, item, data, UserDataSaveReason.PlaybackStart, CancellationToken.None).ConfigureAwait(false);
        }
Beispiel #12
0
        public async Task SaveUserData(Guid userId, IHasUserData item, UserItemData userData, UserDataSaveReason reason, CancellationToken cancellationToken)
        {
            if (userData == null)
            {
                throw new ArgumentNullException("userData");
            }
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }
            if (userId == Guid.Empty)
            {
                throw new ArgumentNullException("userId");
            }

            cancellationToken.ThrowIfCancellationRequested();

            var keys = item.GetUserDataKeys();

            foreach (var key in keys)
            {
                try
                {
                    await Repository.SaveUserData(userId, key, userData, cancellationToken).ConfigureAwait(false);

                    var newValue = userData;

                    lock (_userData)
                    {
                        _userData[GetCacheKey(userId, key)] = newValue;
                    }
                }
                catch (Exception ex)
                {
                    _logger.ErrorException("Error saving user data", ex);

                    throw;
                }
            }

            EventHelper.FireEventIfNotNull(UserDataSaved, this, new UserDataSaveEventArgs
            {
                Keys       = keys,
                UserData   = userData,
                SaveReason = reason,
                UserId     = userId,
                Item       = item
            }, _logger);
        }
Beispiel #13
0
        /// <summary>
        /// Saves the user data.
        /// </summary>
        /// <param name="userId">The user id.</param>
        /// <param name="item">The item.</param>
        /// <param name="userData">The user data.</param>
        /// <param name="reason">The reason.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>Task.</returns>
        /// <exception cref="System.ArgumentNullException">userData
        /// or
        /// cancellationToken
        /// or
        /// userId
        /// or
        /// key</exception>
        public async Task SaveUserData(Guid userId, IHasUserData item, UserItemData userData, UserDataSaveReason reason, CancellationToken cancellationToken)
        {
            if (userData == null)
            {
                throw new ArgumentNullException("userData");
            }
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }
            if (userId == Guid.Empty)
            {
                throw new ArgumentNullException("userId");
            }

            cancellationToken.ThrowIfCancellationRequested();

            var key = item.GetUserDataKey();

            try
            {
                await Repository.SaveUserData(userId, key, userData, cancellationToken).ConfigureAwait(false);

                var newValue = userData;

                // Once it succeeds, put it into the dictionary to make it available to everyone else
                _userData.AddOrUpdate(GetCacheKey(userId, key), newValue, delegate { return newValue; });
            }
            catch (Exception ex)
            {
                _logger.ErrorException("Error saving user data", ex);

                throw;
            }

            EventHelper.FireEventIfNotNull(UserDataSaved, this, new UserDataSaveEventArgs
            {
                Key = key,
                UserData = userData,
                SaveReason = reason,
                UserId = userId,
                Item = item

            }, _logger);
        }
        public async Task SaveUserData(Guid userId, IHasUserData item, UserItemData userData, UserDataSaveReason reason, CancellationToken cancellationToken)
        {
            if (userData == null)
            {
                throw new ArgumentNullException("userData");
            }
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }
            if (userId == Guid.Empty)
            {
                throw new ArgumentNullException("userId");
            }

            cancellationToken.ThrowIfCancellationRequested();

            var key = item.GetUserDataKey();

            try
            {
                await Repository.SaveUserData(userId, key, userData, cancellationToken).ConfigureAwait(false);

                var newValue = userData;

                // Once it succeeds, put it into the dictionary to make it available to everyone else
                _userData.AddOrUpdate(GetCacheKey(userId, key), newValue, delegate { return(newValue); });
            }
            catch (Exception ex)
            {
                _logger.ErrorException("Error saving user data", ex);

                throw;
            }

            EventHelper.FireEventIfNotNull(UserDataSaved, this, new UserDataSaveEventArgs
            {
                Key        = key,
                UserData   = userData,
                SaveReason = reason,
                UserId     = userId,
                Item       = item
            }, _logger);
        }
Beispiel #15
0
        public async Task SaveUserData(Guid userId, IHasUserData item, UserItemData userData, UserDataSaveReason reason, CancellationToken cancellationToken)
        {
            if (userData == null)
            {
                throw new ArgumentNullException("userData");
            }
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }
            if (userId == Guid.Empty)
            {
                throw new ArgumentNullException("userId");
            }

            cancellationToken.ThrowIfCancellationRequested();

            var keys = item.GetUserDataKeys();

            foreach (var key in keys)
            {
                await Repository.SaveUserData(userId, key, userData, cancellationToken).ConfigureAwait(false);
            }

            var cacheKey = GetCacheKey(userId, item.Id);
            _userData.AddOrUpdate(cacheKey, userData, (k, v) => userData);

            EventHelper.FireEventIfNotNull(UserDataSaved, this, new UserDataSaveEventArgs
            {
                Keys = keys,
                UserData = userData,
                SaveReason = reason,
                UserId = userId,
                Item = item

            }, _logger);
        }
        public async Task SaveUserData(Guid userId, IHasUserData item, UserItemData userData, UserDataSaveReason reason, CancellationToken cancellationToken)
        {
            if (userData == null)
            {
                throw new ArgumentNullException("userData");
            }
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }
            if (userId == Guid.Empty)
            {
                throw new ArgumentNullException("userId");
            }

            cancellationToken.ThrowIfCancellationRequested();

            var keys = item.GetUserDataKeys();

            foreach (var key in keys)
            {
                await Repository.SaveUserData(userId, key, userData, cancellationToken).ConfigureAwait(false);
            }

            var cacheKey = GetCacheKey(userId, item.Id);

            _userData.AddOrUpdate(cacheKey, userData, (k, v) => userData);

            EventHelper.FireEventIfNotNull(UserDataSaved, this, new UserDataSaveEventArgs
            {
                Keys       = keys,
                UserData   = userData,
                SaveReason = reason,
                UserId     = userId,
                Item       = item
            }, _logger);
        }
Beispiel #17
0
 public UserItemData GetUserData(Guid userId, IHasUserData item)
 {
     return(GetUserData(userId, item.Id, item.GetUserDataKeys()));
 }
Beispiel #18
0
        public async Task<UserItemDataDto> GetUserDataDto(IHasUserData item, BaseItemDto itemDto, User user)
        {
            var userData = GetUserData(user.Id, item);
            var dto = GetUserItemDataDto(userData);

            await item.FillUserDataDtoValues(dto, userData, itemDto, user).ConfigureAwait(false);
            return dto;
        }
Beispiel #19
0
 public UserItemData GetUserData(string userId, IHasUserData item)
 {
     return GetUserData(new Guid(userId), item);
 }
Beispiel #20
0
 public UserItemData GetUserData(Guid userId, IHasUserData item)
 {
     return GetUserData(userId, item.Id, item.GetUserDataKeys());
 }
Beispiel #21
0
        /// <summary>
        /// Called when [playback start].
        /// </summary>
        /// <param name="userId">The user identifier.</param>
        /// <param name="userDataKey">The user data key.</param>
        /// <param name="item">The item.</param>
        /// <returns>Task.</returns>
        private async Task OnPlaybackStart(Guid userId, string userDataKey, IHasUserData item)
        {
            var data = _userDataRepository.GetUserData(userId, userDataKey);

            data.PlayCount++;
            data.LastPlayedDate = DateTime.UtcNow;

            if (!(item is Video))
            {
                data.Played = true;
            }

            await _userDataRepository.SaveUserData(userId, item, data, UserDataSaveReason.PlaybackStart, CancellationToken.None).ConfigureAwait(false);
        }
Beispiel #22
0
 public UserItemData GetUserData(IHasUserData user, IHasUserData item)
 {
     return GetUserData(user.Id, item);
 }
Beispiel #23
0
        public UserItemDataDto GetUserDataDto(IHasUserData item, User user)
        {
            var userData = GetUserData(user.Id, item.GetUserDataKey());
            var dto = GetUserItemDataDto(userData);

            item.FillUserDataDtoValues(dto, userData, user);

            return dto;
        }
Beispiel #24
0
 public UserChangeMessage(IHasUserData user, ChangeType type)
     : this(new[] { user }, type)
 {
 }
Beispiel #25
0
 public UserItemData GetUserData(string userId, IHasUserData item)
 {
     return(GetUserData(new Guid(userId), item));
 }
Beispiel #26
0
 public UserItemData GetUserData(IHasUserData user, IHasUserData item)
 {
     return(GetUserData(user.Id, item));
 }
Beispiel #27
0
        private void SetUserProperties(IHasUserData item, MediaSourceInfo source, User user)
        {
            var userData = item == null ? new UserItemData() : _userDataManager.GetUserData(user, item);

            var allowRememberingSelection = item == null || item.EnableRememberingTrackSelections;

            SetDefaultAudioStreamIndex(source, userData, user, allowRememberingSelection);
            SetDefaultSubtitleStreamIndex(source, userData, user, allowRememberingSelection);
        }