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

DownloadBackgroundImageAsync() public méthode

Download the movie's background image
public DownloadBackgroundImageAsync ( MovieFull movie, CancellationTokenSource ct ) : Task
movie Popcorn.Models.Movie.Full.MovieFull The movie to process
ct System.Threading.CancellationTokenSource Used to cancel downloading background image
Résultat Task
        public async Task DownloadBackgroundImageAsync(MovieFull movie, CancellationTokenSource ct)
        {
            var watch = Stopwatch.StartNew();

            try
            {
                await Task.Run(async () =>
                {
                    TmdbClient.GetConfig();
                    var tmdbMovie = await TmdbClient.GetMovieAsync(movie.ImdbCode, MovieMethods.Images);
                    var remotePath = new List<string>
                    {
                        TmdbClient.GetImageUrl(Constants.BackgroundImageSizeTmDb,
                            tmdbMovie.BackdropPath).AbsoluteUri
                    };

                    await
                        remotePath.ForEachAsync(
                            background =>
                                DownloadFileHelper.DownloadFileTaskAsync(background,
                                    Constants.BackgroundMovieDirectory + movie.ImdbCode + Constants.ImageFileExtension,
                                    ct: ct),
                            (background, t) =>
                            {
                                if (t.Item3 == null && !string.IsNullOrEmpty(t.Item2))
                                    movie.BackgroundImagePath = t.Item2;
                            });
                }, ct.Token);
            }
            catch (Exception exception) when (exception is TaskCanceledException)
            {
                Logger.Debug(
                    "DownloadBackgroundImageAsync cancelled.");
            }
            catch (Exception exception)
            {
                Logger.Error(
                    $"DownloadBackgroundImageAsync: {exception.Message}");
                throw;
            }
            finally
            {
                watch.Stop();
                var elapsedMs = watch.ElapsedMilliseconds;
                Logger.Debug(
                    $"DownloadBackgroundImageAsync ({movie.ImdbCode}) in {elapsedMs} milliseconds.");
            }
        }