Example #1
0
    private IEnumerator DownloadFile(string url, DownloadFinishHandler callback)
    {
        WWW www = new WWW(url);

        yield return(www);

        if (callback != null)
        {
            callback(www);
        }
        www.Dispose();
    }
        public virtual void Download(string fromUrl, string downloadPath, DownloadFinishHandler finishHandler)
        {
            try
            {
                var uri = new Uri(fromUrl);
                _downloadPath  = downloadPath;
                _finishHandler = finishHandler;
                _waitModal.Reset();

                if (string.IsNullOrEmpty(_downloadPath))
                {
                    _tempFile = Path.GetTempFileName();
                }
                else
                {
                    _tempFile = Path.Combine(_downloadPath, $"{Guid.NewGuid().ToString()}.tmp");
                    Directory.CreateDirectory(_downloadPath);
                }

                var webClient = SetupWebClient();
                webClient.DownloadFileAsync(uri, _tempFile);

                try {
                    _presenter?.ShowModal();
                } catch { /*ignored*/ }

                if (webClient.IsBusy) // presenter wasn't a good Modal :/
                {
                    ModallyWaitForDownloadCompleted();
                }
            }
            catch (Exception e)
            {
                finishHandler(string.Empty, e);
            }
        }