public async Task <LyricsResponse> GetLyrics(LyricsRequest request) { var response = new LyricsResponse() { Lyrics = "", Url = "", }; if (IsInternetAvailable) { string url = $"http://api.lololyrics.com/0.5/getLyric?artist={request.Artist}&track={request.Title}&rawutf8=1"; try { var doc = await XmlDocument.LoadFromUriAsync(new Uri(url)); var status = doc.DocumentElement.ChildNodes.FirstOrDefault(x => x.NodeName == "status"); if (status.InnerText == "OK") { response.Lyrics = doc.DocumentElement.ChildNodes.FirstOrDefault(x => x.NodeName == "response")?.InnerText ?? ""; response.Url = doc.DocumentElement.ChildNodes.FirstOrDefault(x => x.NodeName == "url")?.InnerText ?? ""; } } catch (Exception ex) { } } return(response); }
private void VerifyGetLyricsResponse(LyricsResponse response, LyricsStatus expectedStatus, string expectedLyrics, Mock <ILyricsApiQuery> lyricsApiQueryMock) { response.Should().NotBeNull(); response.Status.Should().Equals(expectedStatus); response.Lyrics.Should().Equals(expectedLyrics); lyricsApiQueryMock.Verify(x => x.FetchLyrics(It.IsAny <Artist>(), It.IsAny <Song>()), Times.Once); }
public async Task GetAllSongLyricsAsync_ReturnsNoSongs_NoLyricsResponse() { var artistName = "artistName"; var worksResponse = new WorksResponse { Works = new List <Work> { new Work { Id = "1234DSF", Title = "Song", Type = "Song" } } }; var lyricsResponse = new LyricsResponse(); _lyricsApiClientMock.Setup(lyricsApiClient => lyricsApiClient.GetLyricsAsync(artistName, It.IsAny <string>())) .Returns(Task.FromResult <LyricsResponse>(lyricsResponse)); var results = await _sut.GetAllSongLyricsAsync(artistName, worksResponse.Works); results.Should().BeEmpty(); }