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); } }
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); } }
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); } }
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); }
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")); }
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")); }
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")); }
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)); }
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)); }
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)); }
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); }
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>())); }
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)); }