Пример #1
0
        private void HandleDownloadFeedback(
            string line,
            CurlDownloadInfo downloadInfo
            )
        {
            var parsedData = _curlDownloadInfoParser.Parse(line, downloadInfo.Id, downloadInfo.Url, downloadInfo.OutputFile);

            if (parsedData == null || parsedData.IsEmpty)
            {
                Logger.Debug("Download Non Parseable: " + line);
                return;
            }
            downloadInfo.DownloadChanged?.Invoke(null, new DownloadCompletedEventArgs(parsedData));
        }
Пример #2
0
        private void HandleDownloadCompleted(int exitCode, CurlDownloadInfo downloadInfo)
        {
            var di    = new DownloadInfo(downloadInfo.Id, downloadInfo.OutputFile, downloadInfo.Url);
            var finfo = new FileInfo(downloadInfo.OutputFile);

            if (finfo.Exists)
            {
                di.BytesTotal    = (int)finfo.Length;
                di.BytesReceived = di.BytesTotal;
            }
            else
            {
                di.BytesTotal    = 1;
                di.BytesReceived = 1;
            }
            Logger.Debug("Download exit code: " + exitCode);
            di.DownloadFaulted = (exitCode != 0);
            downloadInfo.DownloadCompleted?.Invoke(null, new DownloadCompletedEventArgs(di));
        }
Пример #3
0
        public override void Download(
            string id,
            string filePath,
            Uri url,
            IEnumerable <KeyValuePair <string, string> > cookies,
            bool disableTracking,
            DownloadChangedEventHandler downloadChanged     = null,
            DownloadCompletedEventHandler downloadCompleted = null)
        {
            var outputFilePath = filePath.ToSafePath();

            var downloadInfo = new CurlDownloadInfo(id, outputFilePath, url, cookies, disableTracking, downloadChanged, downloadCompleted);

            PrepareOutputDirectory(outputFilePath);

            Sys.RunProcess(
                _curlBin,
                downloadInfo.GetCommadArguments(),
                true,
                (data) => HandleDownloadFeedback(data, downloadInfo),
                HandleDownloadError,
                (exitCode) => HandleDownloadCompleted(exitCode, downloadInfo));
        }