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"); } }
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); }
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))); }
public async Task <bool> PingAsync() { try { var result = await HttpRequester.GetAsync(new Uri(GetPingUrl())); return(!string.IsNullOrEmpty(result)); } catch (Exception) { return(false); } }
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))); }
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))); }
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); } }
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)); } }
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); } }
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); }