Exemplo n.º 1
0
        public async void TestGetSearchListGood()
        {
            var omdb       = new AsyncOmdbClient(TestData.apikey);
            var searchList = await omdb.GetSearchListAsync("Arrow", 1);

            var search = searchList.SearchResults.ToArray();

            Assert.Equal("Arrow", search[0].Title);
            Assert.Equal("2012–", search[0].Year);
            Assert.Equal("tt2193021", search[0].ImdbId);
            Assert.Equal("series", search[0].Type);

            Assert.Equal("Broken Arrow", search[1].Title);
            Assert.Equal("1996", search[1].Year);
            Assert.Equal("tt0115759", search[1].ImdbId);
            Assert.Equal("movie", search[1].Type);

            Assert.Null(searchList.Error);
            Assert.Equal("True", searchList.Response);
        }
Exemplo n.º 2
0
        public async void TestGetSearchListGood2()
        {
            var omdb       = new AsyncOmdbClient(TestData.apikey);
            var searchList = await omdb.GetSearchListAsync("Skyrim", OmdbType.Game);

            var search = searchList.SearchResults.ToArray();

            Assert.Equal("The Elder Scrolls V: Skyrim", search[0].Title);
            Assert.Equal("2011", search[0].Year);
            Assert.Equal("tt1814884", search[0].ImdbId);
            Assert.Equal("game", search[0].Type);

            Assert.Equal("The Elder Scrolls V: Skyrim - Dawnguard", search[1].Title);
            Assert.Equal("2012", search[1].Year);
            Assert.Equal("tt5333506", search[1].ImdbId);
            Assert.Equal("game", search[1].Type);

            Assert.Null(searchList.Error);
            Assert.Equal("True", searchList.Response);
        }
Exemplo n.º 3
0
        public async System.Threading.Tasks.Task TestGetSearchListBad()
        {
            var omdb = new AsyncOmdbClient(TestData.apikey);

            await Assert.ThrowsAsync <ArgumentException>(() => omdb.GetSearchListAsync(null));

            await Assert.ThrowsAsync <ArgumentException>(() => omdb.GetSearchListAsync(""));

            await Assert.ThrowsAsync <ArgumentException>(() => omdb.GetSearchListAsync(" "));

            await Assert.ThrowsAsync <ArgumentOutOfRangeException>(() => omdb.GetSearchListAsync("star wars", 0));

            await Assert.ThrowsAsync <ArgumentOutOfRangeException>(() => omdb.GetSearchListAsync(1500, "star wars", 0));

            await Assert.ThrowsAsync <HttpRequestException>(() => omdb.GetSearchListAsync("asdf"));
        }
Exemplo n.º 4
0
        public async Task ImdbCmdAsync([Remainder] string query)
        {
            var author = new EmbedAuthorBuilder()
                         .WithName("IMDb")
                         .WithIconUrl("http://files.softicons.com/download/social-media-icons/flat-gradient-social-icons-by-guilherme-lima/png/512x512/IMDb.png")
                         .WithUrl("https://www.imdb.com/");
            var list = await _omdb.GetSearchListAsync(query).ConfigureAwait(false);

            if (!string.IsNullOrEmpty(list.Error))
            {
                await Context.MarkCmdFailedAsync($"OMDB: {list.Error}").ConfigureAwait(false);

                return;
            }
            if (list.SearchResults.Count == 1)
            {
                var item = await _omdb.GetItemByIdAsync(list.SearchResults[0].ImdbId).ConfigureAwait(false);

                var embed = new EmbedBuilder()
                            .WithColor(new Color(248, 231, 28))
                            .WithCurrentTimestamp()
                            .WithTitle($"{item.Title} ({item.Year})")
                            .WithDescription($"{item.Plot} ({item.Runtime})")
                            .WithUrl($"https://www.imdb.com/title/{ item.ImdbId}")
                            .WithImageUrl(item.Poster)
                            .WithAuthor(author)
                            .AddField("Rating", $"{item.ImdbRating}\nMetascore: {item.Metascore}")
                            .AddField("Info", $"Director: {item.Director}\nWriter: {item.Writer}\nCast: {item.Actors}\nGenre: {item.Genre}\nCountry: {item.Country}")
                            .AddField("Release dates", $"Released: {item.Released}\nDVD: {item.Dvd}", true)
                            .AddField("Trivia", $"Box office: {item.BoxOffice}\nAwards: {item.Awards}")
                            .Build();
                await ReplyAsync(embed : embed).ConfigureAwait(false);

                return;
            }
            var pages = new List <string>();

            foreach (var result in list.SearchResults)
            {
                var item = await _omdb.GetItemByIdAsync(result.ImdbId).ConfigureAwait(false);

                var str = $@"{$"{item.Title} ({item.Year})".Bold().Hyperlink(Helpers.BuildSafeUrl($"https://www.imdb.com/title/{item.ImdbId}"))}
{item.Plot} ({item.Runtime})
{"Rating".Bold()}
{item.ImdbRating}
Metascore: {item.Metascore}
{"Info".Bold()}
Director: {item.Director}
Writer: {item.Writer}
Cast: {item.Actors}
Genre: {item.Genre}
Country: {item.Country}
{"Release dates".Bold()}
Released: {item.Released}
DVD: {item.Dvd}
{"Trivia".Bold()}
Box office: {item.BoxOffice}
Awards: {item.Awards}";
                pages.Add(str);
            }
            var msg = new PaginatedMessage()
            {
                Title = $"Search results for {query.Italics()}", Author = author, Color = new Color(248, 231, 28), Pages = pages
            };

            await PagedReplyAsync(msg, false).ConfigureAwait(false);
        }