Beispiel #1
0
        public void Enqueue_ArgumentNullException()
        {
            // arrange
            IUserQueue <string> queue = new UserQueue <string>();
            string element            = null;

            // act
            queue.Enqueue(element);
        }
Beispiel #2
0
        /// <summary>
        /// Returns true if the user can request another song.
        /// </summary>
        public static bool QueueUserSong(string mp3, string user, out Song song)
        {
            var file     = new AudioFile(mp3);
            var duration = file.Properties.Duration;

            song = new Song
            {
                Name      = Path.GetFileNameWithoutExtension(mp3),
                Stream    = "/" + Path.GetFileName(mp3),
                Download  = "/download/" + Path.GetFileName(mp3),
                Duration  = duration,
                UserAdded = true
            };
            var name = song.Name;

            if (MasterQueue.Any(s => s.Name == name))
            {
                return(true);
            }
            if (!UserRequests.ContainsKey(user))
            {
                UserRequests[user] = new List <DateTime>();
                UserRequests[user].Add(DateTime.Now);
            }
            else
            {
                foreach (var item in UserRequests[user].ToArray())
                {
                    if (item.AddMinutes(Program.Configuration.RequestLimitResetMinutes) < DateTime.Now)
                    {
                        UserRequests[user].Remove(item);
                    }
                }
                if (UserRequests[user].Count >= Program.Configuration.MaximumRequestsPerUser)
                {
                    return(false);
                }
                UserRequests[user].Add(DateTime.Now);
            }
            UserQueue.Enqueue(song);
            return(UserRequests[user].Count < Program.Configuration.MaximumRequestsPerUser);
        }