/// <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)); } }