private void DownloadMeta(CancellationToken cancellationToken)
        {
            _logger.LogDebug("Downloading resource meta...");

            var downloader = _createNewHttpDownloader(_destinationMetaPath, _resource.GetMetaUrls());

            downloader.Download(cancellationToken);

            _logger.LogDebug("Resource meta downloaded.");
        }
        private void ResolveDownloader(CancellationToken cancellationToken)
        {
            if (_resource.HasMetaUrls())
            {
                DebugLogger.Log("Downloading meta data...");

                if (File.Exists(_destinationMetaPath))
                {
                    DebugLogger.Log("Removing previous meta data file: " + _destinationMetaPath);
                    File.Delete(_destinationMetaPath);
                }

                var httpDownloader = CreateDefaultHttpDownloader(_destinationMetaPath, _resource.GetMetaUrls(), 0,
                                                                 HttpDownloaderTimeout);

                httpDownloader.Download(cancellationToken);

                DebugLogger.Log("Meta data downloaded");
            }

            DebugLogger.Log("Downloading content file");

            if (_useTorrents)
            {
                bool downloaded = TryDownloadWithTorrent(cancellationToken);

                if (downloaded)
                {
                    return;
                }
            }

            if (AreChunksAvailable())
            {
                DebugLogger.Log("Chunsk data is available.");
                DownloadWithChunkedHttp(cancellationToken);
            }
            else
            {
                DebugLogger.Log("Chunks data is not available.");
                DownloadWithHttp(cancellationToken);
            }
        }