Example #1
0
        public async void Can_use_the_HttpRequester()
        {
            var person = new Person
            {
                Id = Guid.NewGuid(),
                FirstName = "Daniel",
                LastName = "Wertheim",
                Age = 35
            };

            using (var requester = new HttpRequester($"{_server.BaseAddress}/api/persons/", _server.Handler))
            {
                var forThePut = await requester.PutEntityAsync(person);
                forThePut.TheResponse(should => should
                    .BeSuccessful()
                    .HaveStatus(HttpStatusCode.Created));

                var forTheGet = await requester.GetAsync(person.Id.ToString());
                forTheGet.TheResponse(should => should
                    .BeSuccessful()
                    .BeJsonResponse()
                    .HaveSpecificValue("FirstName", "Daniel"));

                var getResponse = await requester.GetAsync<Person>(person.Id.ToString());
                var retrieved = getResponse.Content;
                retrieved.Should().NotBeNull();
                retrieved.FirstName.Should().Be("Daniel");
            }
        }
Example #2
0
        private async Task <string> GetDirector(string imdbCode)
        {
            var html = await HttpRequester.GetAsync("https://www.imdb.com/title/" + imdbCode, null);

            if (html == null)
            {
                return(string.Empty);
            }

            var doc = new HtmlAgilityPack.HtmlDocument();

            doc.LoadHtml(html);

            var directorSection = doc.DocumentNode.SelectSingleNode("//h4[contains(text(),'Director')]");

            if (directorSection == null)
            {
                return(string.Empty);
            }

            doc.LoadHtml(directorSection.ParentNode.InnerHtml);

            var directorName = doc.DocumentNode.SelectSingleNode("/a")?.InnerText;

            return(string.IsNullOrEmpty(directorName) ? string.Empty : directorName);
        }
Example #3
0
        public override async Task <IEnumerable <MovieDto> > GetMoviesByNameAsync(string name)
        {
            var parameters = new NameValueCollection();

            parameters.Add("query_term", name);
            parameters.Add("sort_by", "year");
            parameters.Add("order_by", "desc");

            var requestResult = await HttpRequester.GetAsync <YtsResultDto>(ytsApiUrlProvider.GetBaseApiUrl() + listMovies, parameters);

            return(requestResult.Data.Movies?.Select(m => ToMovieDto(m)));
        }
Example #4
0
        public async Task <bool> PingAsync()
        {
            try
            {
                var result = await HttpRequester.GetAsync(new Uri(GetPingUrl()));

                return(!string.IsNullOrEmpty(result));
            }
            catch (Exception)
            {
                return(false);
            }
        }
Example #5
0
        public override async Task <IEnumerable <MovieDto> > GetMoviesByGenreAsync(string genre, int page)
        {
            var parameters = new NameValueCollection();

            parameters.Add("limit", (20).ToString());
            parameters.Add("page", page.ToString());
            parameters.Add("sort_by", "year");
            parameters.Add("order_by", "desc");
            parameters.Add("genre", genre);

            var requestResult = await HttpRequester.GetAsync <YtsResultDto>(ytsApiUrlProvider.GetBaseApiUrl() + listMovies, parameters);

            return(requestResult.Data.Movies.Select(m => ToMovieDto(m)));
        }
Example #6
0
        public override async Task <IEnumerable <MovieDto> > GetLastMoviesByGenreAsync(int nbMovies, string genre)
        {
            var parameters = new NameValueCollection();

            parameters.Add("limit", (50).ToString());
            parameters.Add("page", "1");
            parameters.Add("minimum_rating", "5");
            parameters.Add("sort_by", "year");
            parameters.Add("order_by", "desc");
            parameters.Add("genre", genre);

            var requestResult = await HttpRequester.GetAsync <YtsResultDto>(ytsApiUrlProvider.GetBaseApiUrl() + listMovies, parameters);

            return(requestResult.Data.Movies.OrderBy(m => m.DateUploaded).Take(nbMovies).Select(m => ToMovieDto(m)));
        }
Example #7
0
        private string GetTorrentLink(string moviePageUrl)
        {
            var htmlPage = HttpRequester.GetAsync(new Uri(moviePageUrl)).Result;

            var startIndex = htmlPage.IndexOf("magnet:?xt=urn:btih");
            var lastIndex  = startIndex > 0 ? htmlPage.IndexOf("\"", startIndex) : 0;

            if (startIndex * lastIndex > 0)
            {
                return(baseUrl + htmlPage.Substring(startIndex, lastIndex - startIndex));
            }
            else
            {
                return(null);
            }
        }
Example #8
0
        public async void Flow_tests()
        {
            var person = new Person
            {
                Id        = Guid.NewGuid(),
                FirstName = "Daniel",
                LastName  = "Wertheim",
                Age       = 35
            };

            using (var requester = new HttpRequester($"{_server.BaseAddress}/api/persons/", _server.Handler))
            {
                var forTheCreatingPut = await requester.PutEntityAsJsonAsync(person);

                forTheCreatingPut.TheResponse(should => should
                                              .BeSuccessful()
                                              .HaveStatus(HttpStatusCode.Created));

                var forTheGet = await requester.GetAsync(person.Id.ToString());

                forTheGet.TheResponse(should => should
                                      .BeSuccessful()
                                      .BeJsonResponse()
                                      .HaveSpecificValueFor("firstName", "Daniel"));

                person.Age = 42;
                var forTheUpdatingPut = await requester.PutEntityAsJsonAsync(person);

                forTheUpdatingPut.TheResponse(should => should
                                              .BeSuccessful()
                                              .HaveStatus(HttpStatusCode.OK));

                var forTheDelete = await requester.DeleteAsync(person.Id.ToString());

                forTheDelete.TheResponse(should => should
                                         .BeSuccessful()
                                         .HaveStatus(HttpStatusCode.OK));

                var forTheCreatingPost = await requester.PostEntityAsJsonAsync(person);

                forTheCreatingPost.TheResponse(should => should
                                               .BeSuccessful()
                                               .HaveStatus(HttpStatusCode.Created)
                                               .BeJsonResponse()
                                               .NotHavingSpecificValueFor("id", person.Id));
            }
        }
Example #9
0
        public override async Task <IEnumerable <MovieDto> > GetSuggestedMoviesAsync(int nbMovies)
        {
            var parameters = new NameValueCollection();

            parameters.Add("limit", (50).ToString());
            parameters.Add("page", "1");
            parameters.Add("minimum_rating", "8");
            parameters.Add("sort_by", "year");
            parameters.Add("order_by", "desc");

            var requestResult = await HttpRequester.GetAsync <YtsResultDto>(ytsApiUrlProvider.GetBaseApiUrl() + listMovies, parameters);

            return(requestResult.Data.Movies.Where(m => !string.IsNullOrEmpty(m.Summary))
                   .OrderBy(m => m.DateUploaded)
                   .Reverse()
                   .Take(nbMovies)
                   .Select(m => ToMovieDto(m)));
        }
        private async Task <string> GetOpenSubtitleMovieId(string imdbCode)
        {
            var url = "https://www.opensubtitles.org/libs/suggest.php";

            var pamareters = new NameValueCollection();

            pamareters.Add("format", "json3");
            pamareters.Add("MovieName", imdbCode);

            try
            {
                var dto = await HttpRequester.GetAsync <List <OpenSubtitleMovieIdDto> >(url, pamareters);

                return(dto?.FirstOrDefault()?.OpenSubtitleMovieId);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Example #11
0
        public override async Task <MovieDto> GetMovieDetailsAsync(string movieId)
        {
            var parameters = new NameValueCollection();

            parameters.Add("movie_id", movieId);
            parameters.Add("with_cast", "true");
            parameters.Add("sort_by", "year");
            parameters.Add("order_by", "desc");

            var requestResult = await HttpRequester.GetAsync <YtsResultDto>(ytsApiUrlProvider.GetBaseApiUrl() + movieDetails, parameters);

            var movieDto = ToMovieDto(requestResult?.Data?.Movie);

            if (movieDto != null)
            {
                movieDto.Director = await GetDirector(movieDto.ImdbCode);
            }

            return(movieDto);
        }