NFe.Settings.ConfiguracaoApp.DownloadArquivoURLConsultaDFe C# (CSharp) Method

DownloadArquivoURLConsultaDFe() private static method

private static DownloadArquivoURLConsultaDFe ( ) : bool
return bool
        private static bool DownloadArquivoURLConsultaDFe()
        {
            string URL = "http://www.unimake.com.br/pub/downloads/sefaz.inc";
            string LocalFile = Application.StartupPath + "\\sefaz.inc";
            HttpWebRequest webRequest = null;
            HttpWebResponse webResponse = null;
            Stream strResponse = null;
            Stream strLocal = null;
            bool result = true;
            DateTime dateFile = new DateTime(2000, 1, 1);

            if (File.Exists(LocalFile))
            {
                dateFile = File.GetCreationTime(LocalFile).Date;
            }

            double lastUpdate = (DateTime.Now.Date - dateFile).TotalDays;

            // Vai rodar atualização do arquivo somente se tiver mais que 30 dias
            if (lastUpdate < 30)
            {
                return result;
            }

            // Vamos deletar para fazer o download novamente
            if (File.Exists(LocalFile))
            {
                File.Delete(LocalFile);
            }

            using (WebClient Client = new WebClient())
            {
                try
                {
                    // Criar um pedido do arquivo que será baixado
                    webRequest = (HttpWebRequest)WebRequest.Create(URL);

                    // Definir dados da conexao do proxy
                    if (ConfiguracaoApp.Proxy)
                    {
                        webRequest.Proxy = NFe.Components.Proxy.DefinirProxy(ConfiguracaoApp.ProxyServidor, ConfiguracaoApp.ProxyUsuario, ConfiguracaoApp.ProxySenha, ConfiguracaoApp.ProxyPorta, ConfiguracaoApp.DetectarConfiguracaoProxyAuto);
                    }

                    webRequest.Timeout = 10000; //10 segundos, se não conseguir, vai abortar para não atrabalhar o sistema. Wandrey

                    // Atribuir autenticação padrão para a recuperação do arquivo
                    webRequest.Credentials = CredentialCache.DefaultCredentials;

                    // Obter a resposta do servidor
                    webResponse = (HttpWebResponse)webRequest.GetResponse();

                    // Perguntar ao servidor o tamanho do arquivo que será baixado
                    Int64 fileSize = webResponse.ContentLength;

                    // Abrir a URL para download                    
                    strResponse = Client.OpenRead(URL);

                    // Criar um novo arquivo a partir do fluxo de dados que será salvo na local disk
                    strLocal = new FileStream(LocalFile, FileMode.Create, FileAccess.Write, FileShare.None);

                    // Ele irá armazenar o número atual de bytes recuperados do servidor
                    int bytesSize = 0;

                    // Um buffer para armazenar e gravar os dados recuperados do servidor
                    byte[] downBuffer = new byte[2048];

                    // Loop através do buffer - Até que o buffer esteja vazio
                    while ((bytesSize = strResponse.Read(downBuffer, 0, downBuffer.Length)) > 0)
                    {
                        // Gravar os dados do buffer no disco rigido
                        strLocal.Write(downBuffer, 0, bytesSize);
                    }
                }
                catch (IOException ex)
                {
                    Auxiliar.WriteLog(ex.Message, true);
                    result = false;
                }
                catch (WebException ex)
                {
                    Auxiliar.WriteLog(ex.Message, true);
                    result = false;
                }
                catch (Exception ex)
                {
                    Auxiliar.WriteLog(ex.Message, true);
                    result = false;
                }
                finally
                {
                    // Encerrar as streams
                    if (strResponse != null)
                        strResponse.Close();

                    if (strLocal != null)
                        strLocal.Close();

                    webRequest.Abort();
                    webResponse.Close();
                }

                return result;
            }

        }
        #endregion