Popcorn.Services.Movie.MovieService.GetGreatestMoviesAsync C# (CSharp) Méthode

GetGreatestMoviesAsync() public méthode

Get greatest movies by page
public GetGreatestMoviesAsync ( int page, int limit, double ratingFilter, CancellationToken ct, Popcorn.Models.Genre.MovieGenre genre = null ) : int>>.Task
page int Page to return
limit int The maximum number of movies to return
ratingFilter double Used to filter by rating
ct System.Threading.CancellationToken Cancellation token
genre Popcorn.Models.Genre.MovieGenre The genre to filter
Résultat int>>.Task
        public async Task<Tuple<IEnumerable<MovieShort>, int>> GetGreatestMoviesAsync(int page,
            int limit,
            double ratingFilter,
            CancellationToken ct,
            MovieGenre genre = null)
        {
            var watch = Stopwatch.StartNew();

            var wrapper = new WrapperMovieShort();

            if (limit < 1 || limit > 50)
                limit = 20;

            if (page < 1)
                page = 1;

            var restClient = new RestClient(Constants.YtsApiEndpoint);
            var request = new RestRequest("/{segment}", Method.GET);
            request.AddUrlSegment("segment", "list_movies.json");
            request.AddParameter("limit", limit);
            request.AddParameter("page", page);
            if (genre != null) request.AddParameter("genre", genre.EnglishName);
            request.AddParameter("minimum_rating", ratingFilter);
            request.AddParameter("sort_by", "rating");

            try
            {
                var response = await restClient.ExecuteGetTaskAsync<WrapperMovieShort>(request, ct);
                if (response.ErrorException != null)
                    throw response.ErrorException;

                wrapper = response.Data;
            }
            catch (Exception exception) when (exception is TaskCanceledException)
            {
                Logger.Debug(
                    "GetGreatestMoviesAsync cancelled.");
            }
            catch (Exception exception)
            {
                Logger.Error(
                    $"GetGreatestMoviesAsync: {exception.Message}");
                throw;
            }
            finally
            {
                watch.Stop();
                var elapsedMs = watch.ElapsedMilliseconds;
                Logger.Debug(
                    $"GetGreatestMoviesAsync ({page}, {limit}) in {elapsedMs} milliseconds.");
            }

            var movies = GetMoviesListFromWrapper(wrapper) ?? new List<MovieShort>();
            var nbMovies = wrapper?.Data?.MovieCount ?? 0;

            return new Tuple<IEnumerable<MovieShort>, int>(movies, nbMovies);
        }