protected bool OnResponseReceived(DownloadResponse response)
        {
            var eventArgs = new ResponseReceivedEventArgs(Request, response);

            ResponseReceived?.Invoke(this, eventArgs);
            return(eventArgs.Abort);
        }
Esempio n. 2
0
        private bool OnResponseReceived(DownloadResponse response)
        {
            var args = new ResponseReceivedEventArgs(Request, response);

            ResponseReceived?.Invoke(this, args);
            return(args.Abort);
        }
        protected async Task <HttpWebResponse> GetResponse(HttpWebRequest webRequest, CancellationToken stopToken)
        {
            HttpWebResponse webResponse;

            try
            {
                webResponse = (HttpWebResponse)await webRequest.GetResponseAsync();
            }
            catch (WebException we)
            {
                webResponse = we.Response as HttpWebResponse;
                if (webResponse == null)
                {
                    throw;
                }
            }
            var response = new DownloadResponse(webResponse);

            if (OnResponseReceived(response))
            {
                throw new OperationCanceledException("Aborted by the user.");
            }

            await ShrinkStream(response.Range.Start - Range.Start, stopToken);

            if (response.ContentLength > 0)
            {
                TotalSize = response.IsPartial ? response.ContentLength + TotalWritten : response.ContentLength;
            }

            if ((response.StatusCode != HttpStatusCode.OK) &&
                (response.StatusCode != HttpStatusCode.PartialContent))
            {
                throw new DownloadException($"Failed to start downloading file. {webResponse.StatusDescription}");
            }

            _tries = 0;
            return(webResponse);
        }