Exemplo n.º 1
0
        private async void OnCommandReceived(object sender, CommandEventArgs cmd)
        {
            var match = Regex.Match(cmd.Message);
            if (!match.Success)
            {
                Log.Debug($"Message ignored: '{cmd.Message}' doesn't match '{Regex}'");
                return;
            }

            var tag = match.Groups["tag"].Value.TrimEnd();
            if (tag == string.Empty)
            {
                Log.Debug($"Message ignored: matches '{Regex}' but <tag> is empty");
                return;
            }

            Log.Debug($"Replying: '{cmd.Message}' matches '{Regex}', <tag> = '{tag}'");

            try
            {
                var post = await GetRandomPost(tag);
                var message = post == null
                    ? $"{cmd.Nick}: Whoops, no tumblrs found"
                    : $"{cmd.Nick}: {post.image_permalink}";

                _chatClient.SendMessage(message, cmd.Source);
            }
            catch (HttpClientException)
            {
                _chatClient.SendMessage($"{cmd.Nick}: Whoops, something went wrong", cmd.Source);
            }
        }
Exemplo n.º 2
0
        private async void OnCommandReceived(object sender, CommandEventArgs cmd)
        {
            var match = Regex.Match(cmd.Message);
            if (!match.Success)
            {
                Log.Debug($"Message ignored: '{cmd.Message}' doesn't match '{Regex}'");
                return;
            }

            var place = match.Groups["place"].Value.TrimEnd();
            if (place == string.Empty)
            {
                Log.Debug($"Message ignored: matches '{Regex}' but <place> is empty");
                return;
            }

            Log.Debug($"Replying: '{cmd.Message}' matches '{Regex}', <place> = '{place}'");

            try
            {
                var url = await _mapsClient.GetStaticUrlAsync(place);
                _chatClient.SendMessage($"{cmd.Nick}: {url}", cmd.Source);
            }
            catch (HttpClientException)
            {
                _chatClient.SendMessage($"{cmd.Nick}: Whoops, something went wrong", cmd.Source);
            }
        }
Exemplo n.º 3
0
        private async void OnCommandReceived(object sender, CommandEventArgs cmd)
        {
            var match = Regex.Match(cmd.Message);
            if (!match.Success)
            {
                Log.Debug($"Message ignored: '{cmd.Message}' doesn't match '{Regex}'");
                return;
            }

            var query = match.Groups["query"].Value.TrimEnd();
            if (query == string.Empty)
            {
                Log.Debug($"Message ignored: matches '{Regex}' but <query> is empty");
                return;
            }

            Log.Debug($"Replying: '{cmd.Message}' matches '{Regex}', <query> = '{query}'");

            try
            {
                var lyrics = await GetRandomLyrics(query);
                if (lyrics == null)
                {
                    _chatClient.SendMessage($"{cmd.Nick}: Whoops, no lyrics found", cmd.Source);
                    return;
                }

                _chatClient.SendMessage(lyrics.Snippet, cmd.Source);
                _chatClient.SendMessage(lyrics.Attribution, cmd.Source);
            }
            catch (HttpClientException)
            {
                _chatClient.SendMessage($"{cmd.Nick}: Whoops, something went wrong", cmd.Source);
            }
        }
Exemplo n.º 4
0
        public void Command_Received_Non_Match_Or_Empty_Ignored()
        {
            var listener = new MapListener(_mockChatClient.Object, _mockMapsClient.Object);

            var cmd = new CommandEventArgs(null, null, "doughnut");
            _mockChatClient.Raise(m => m.CommandReceived += null, cmd);

            cmd = new CommandEventArgs(null, null, "map of");
            _mockChatClient.Raise(m => m.CommandReceived += null, cmd);

            _mockChatClient.Verify(m => m.SendMessage(It.IsAny<string>(), It.IsAny<string[]>()),
                Times.Never);
        }
Exemplo n.º 5
0
        public void Command_Received_Match_Trims_Tag()
        {
            _mockMapsClient
                .Setup(m => m.GetStaticUrlAsync(It.IsAny<string>()))
                .ReturnsAsync(StaticUrl);

            var listener = new MapListener(_mockChatClient.Object, _mockMapsClient.Object);

            var cmd = new CommandEventArgs(null, null, ValidCmd + " ");
            _mockChatClient.Raise(m => m.CommandReceived += null, cmd);

            _mockMapsClient.Verify(m => m.GetStaticUrlAsync("bristol"));
        }
Exemplo n.º 6
0
        public void Command_Received_Match_Http_Exception_Caught()
        {
            _mockMapsClient
                .Setup(m => m.GetStaticUrlAsync(It.IsAny<string>()))
                .Throws(new HttpClientException(null, null));

            var listener = new MapListener(_mockChatClient.Object, _mockMapsClient.Object);

            var cmd = new CommandEventArgs("#chan1", "JIM", ValidCmd);
            _mockChatClient.Raise(m => m.CommandReceived += null, cmd);

            _mockChatClient.Verify(m => m.SendMessage("JIM: Whoops, something went wrong",
                "#chan1"));
        }
Exemplo n.º 7
0
        public void Command_Received_Match_No_Posts_Whoops()
        {
            _mockMusixClient
                .Setup(m => m.GetTracksAsync(It.IsAny<string>(), It.IsAny<int>()))
                .ReturnsAsync(new List<dynamic>());

            var listener = new SingListener(_mockChatClient.Object, _mockMusixClient.Object,
                _mockRandomiser.Object);

            var cmd = new CommandEventArgs("#chan1", "JIM", ValidCmd);
            _mockChatClient.Raise(m => m.CommandReceived += null, cmd);

            _mockChatClient.Verify(m => m.SendMessage("JIM: Whoops, no lyrics found",
                "#chan1"));
        }
Exemplo n.º 8
0
        public void Command_Received_Match_Gets_25_Tracks_With_Query()
        {
            _mockMusixClient
                .Setup(m => m.GetTracksAsync(It.IsAny<string>(), It.IsAny<int>()))
                .ReturnsAsync(_tracks);

            var listener = new SingListener(_mockChatClient.Object, _mockMusixClient.Object,
                _mockRandomiser.Object);

            var cmd = new CommandEventArgs(null, null, ValidCmd);
            _mockChatClient.Raise(m => m.CommandReceived += null, cmd);

            const string expQuery = "wraps";
            const int expLimit = 25;

            _mockMusixClient.Verify(m => m.GetTracksAsync(expQuery, expLimit));
        }
Exemplo n.º 9
0
        public void Command_Received_Match_Replies()
        {
            _mockMapsClient
                .Setup(m => m.GetStaticUrlAsync(It.IsAny<string>()))
                .ReturnsAsync(StaticUrl);

            var listener = new MapListener(_mockChatClient.Object, _mockMapsClient.Object);

            var cmd = new CommandEventArgs("#chan1", "JIM", ValidCmd);
            _mockChatClient.Raise(m => m.CommandReceived += null, cmd);

            cmd = new CommandEventArgs("#chan1", "JIM", "map edinburgh");
            _mockChatClient.Raise(m => m.CommandReceived += null, cmd);

            _mockChatClient.Verify(m => m.SendMessage($"JIM: {StaticUrl}", "#chan1"),
                Times.Exactly(2));
        }
Exemplo n.º 10
0
        public void Command_Received_Match_Replies()
        {
            _mockMusixClient
                .Setup(m => m.GetTracksAsync(It.IsAny<string>(), It.IsAny<int>()))
                .ReturnsAsync(_tracks);

            _mockMusixClient
                .Setup(m => m.GetLyricsAsync(It.IsAny<object>()))
                .ReturnsAsync(_lyrics1);

            var listener = new SingListener(_mockChatClient.Object, _mockMusixClient.Object,
                _mockRandomiser.Object);

            var cmd = new CommandEventArgs("#chan1", null, ValidCmd);
            _mockChatClient.Raise(m => m.CommandReceived += null, cmd);

            cmd = new CommandEventArgs("#chan1", null, "sing wraps");
            _mockChatClient.Raise(m => m.CommandReceived += null, cmd);

            _mockChatClient.Verify(m => m.SendMessage(_lyrics1.Snippet, "#chan1"),
                Times.Exactly(2));

            _mockChatClient.Verify(m => m.SendMessage(_lyrics1.Attribution, "#chan1"),
                Times.Exactly(2));
        }
Exemplo n.º 11
0
        public void Command_Received_Non_Match_Or_Empty_Ignored()
        {
            var listener = new SingListener(_mockChatClient.Object, _mockMusixClient.Object,
                _mockRandomiser.Object);

            var cmd = new CommandEventArgs(null, null, "baguette");
            _mockChatClient.Raise(m => m.CommandReceived += null, cmd);

            cmd = new CommandEventArgs(null, null, "sing about");
            _mockChatClient.Raise(m => m.CommandReceived += null, cmd);

            _mockChatClient.Verify(m => m.SendMessage(It.IsAny<string>(), It.IsAny<string[]>()),
                Times.Never);
        }
Exemplo n.º 12
0
        public void Command_Received_Match_Trims_Query()
        {
            _mockMusixClient
                .Setup(m => m.GetTracksAsync(It.IsAny<string>(), It.IsAny<int>()))
                .ReturnsAsync(_tracks);

            var listener = new SingListener(_mockChatClient.Object, _mockMusixClient.Object,
                _mockRandomiser.Object);

            var cmd = new CommandEventArgs(null, null, ValidCmd + " ");
            _mockChatClient.Raise(m => m.CommandReceived += null, cmd);

            _mockMusixClient.Verify(m => m.GetTracksAsync("wraps", It.IsAny<int>()));
        }
Exemplo n.º 13
0
        public void Command_Received_Match_Replies_With_Lyrics_From_Random_Track()
        {
            const int randomIndex = 1;
            object expTrack = _tracks[randomIndex];

            _mockRandomiser.Setup(m => m.NextInt(It.IsAny<int>())).Returns(randomIndex);

            _mockMusixClient.Setup(m => m.GetTracksAsync(It.IsAny<string>(), It.IsAny<int>()))
                .ReturnsAsync(_tracks);

            _mockMusixClient.Setup(m => m.GetLyricsAsync(expTrack))
                .ReturnsAsync(_lyrics2);

            var listener = new SingListener(_mockChatClient.Object, _mockMusixClient.Object,
                _mockRandomiser.Object);

            var cmd = new CommandEventArgs("#chan1", null, ValidCmd);
            _mockChatClient.Raise(m => m.CommandReceived += null, cmd);

            _mockMusixClient.Verify(m => m.GetLyricsAsync(expTrack));
        }