Ejemplo n.º 1
0
        /// <summary>
        /// Obtiene un archivo desde FTP y devuelve el archivo parseado a objeto
        /// </summary>
        /// <param name="obj">{ ftp, ftpPath, file, localPath }</param>
        /// <returns></returns>
        private Response <FileRef> ObtenerArchivoDesdeFTP(dynamic obj)
        {
            try
            {
                var _ftp       = (SIR.Common.FTP.FTPClient)((dynamic)obj).ftp;
                var _file      = (string)((dynamic)obj).file;
                var _ftpPath   = (string)((dynamic)obj).ftpPath;
                var _localPath = (string)((dynamic)obj).localPath;

                // obtengo el archivo desde el FTP
                var content = _ftp.Download($"{_ftpPath}/{_file}");

                // Versiono el archivo (el nuevo siempre queda con el nombre original y los anteriores se ván versionando)
                var version = 0;
                var localFilePathOriginal = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, _localPath, _file);
                var localFileOriginal     = new System.IO.FileInfo(localFilePathOriginal);
                var localFile             = new System.IO.FileInfo(localFilePathOriginal);
                while (localFile.Exists)
                {
                    version++;
                    localFile = new System.IO.FileInfo($"{localFilePathOriginal}.{version:D3}");
                }
                if (version > 0)
                {
                    System.IO.File.Move(localFileOriginal.FullName, localFile.FullName);
                    Logger.Trace($"Se ha versionado el archivo existente '{localFileOriginal.Name}' a '{localFile.Name}'");
                }

                // Escribo el archivo en la carpeta local con el nombre original
                System.IO.File.WriteAllBytes(localFilePathOriginal, content);
                Logger.Info($"Se ha descargado el archivo {localFileOriginal.Name}");

                //Obtengo el archivo parseado a objeto
                var fileref = FileRef.Get(localFilePathOriginal, content);
                if (!fileref.ExistsErrorMessages)
                {
                    Logger.Debug($"Se ha mapeado el archivo '{fileref.Data.FileName}'. Dependencias:{fileref.Data.Dependencias.Count}. Detalles:{fileref.Data.Detalles.Count}.");
                }

                return(fileref);
            }
            catch (Exception ex)
            {
                return(new Response <FileRef>(ex));
            }
        }