From d8c62a8a7618c327cb37b018cdaf60b4b3da0f54 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Fri, 4 Oct 2024 17:19:54 +0200 Subject: [PATCH] Fix ultimi test x FTP, ora va implementato adapter --- EgwProxy.Ftp.Test/Program.cs | 4 ++-- EgwProxy.Ftp/Manager.cs | 44 ++++++++++++++++++++++++++++-------- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/EgwProxy.Ftp.Test/Program.cs b/EgwProxy.Ftp.Test/Program.cs index b141dc80..1501e48b 100644 --- a/EgwProxy.Ftp.Test/Program.cs +++ b/EgwProxy.Ftp.Test/Program.cs @@ -341,7 +341,7 @@ namespace EgwProxy.Ftp.Test ftpClient.createDir(remoteDir); } - var mirrorDone = ftpClient.sendDir(localDir, remoteDir); + var mirrorDone = ftpClient.sendDir(localDir, remoteDir, true); esitoStep = mirrorDone ? $"Directory {localDir} mirrored L2R!" : $"Error: {remoteDir} NOT mirrored!"; } @@ -362,7 +362,7 @@ namespace EgwProxy.Ftp.Test var preTest = ftpClient.dirExists(remoteDir); if (preTest) { - var mirrorDone = ftpClient.getDir(localDir, remoteDir); + var mirrorDone = ftpClient.getDir(localDir, remoteDir, true); esitoStep = mirrorDone ? $"Directory {remoteDir} mirrored R2L!" : $"Error: {remoteDir} NOT mirrored!"; } else diff --git a/EgwProxy.Ftp/Manager.cs b/EgwProxy.Ftp/Manager.cs index 6052c7df..9896e79c 100644 --- a/EgwProxy.Ftp/Manager.cs +++ b/EgwProxy.Ftp/Manager.cs @@ -7,7 +7,9 @@ using System.Net.Security; namespace EgwProxy.Ftp { /// - /// Client per operazioni FTP, basato su FluentFTP: https://github.com/robinrodricks/FluentFTP/wiki/Quick-Start-Example + /// Client per operazioni FTP, basato su FluentFTP: + /// https://github.com/robinrodricks/FluentFTP + /// https://github.com/robinrodricks/FluentFTP/wiki/Quick-Start-Example /// public class Manager { @@ -40,6 +42,7 @@ namespace EgwProxy.Ftp { client = new FtpClient(server); } + client.Config.RetryAttempts = 3; } } @@ -136,15 +139,23 @@ namespace EgwProxy.Ftp /// /// Path directory da inviare (ad es:@"C:\website\videos\") /// Nome remoto file per caricamento (ad es: @"/public_html/videos") - public bool getDir(string localDir, string remoteDir) + /// Indica se sia richeisto udpate post mirroring + public bool getDir(string localDir, string remoteDir, bool forceUpdate = false) { bool answ = false; - tryConnect(); try { + tryConnect(); + //var result = client.DownloadDirectory(localDir, remoteDir, FtpFolderSyncMode.Mirror, FtpLocalExists.Overwrite, FtpVerify.Retry); // upload della folder + files, cancellazione extra files = mirroring - var result = client.DownloadDirectory(localDir, remoteDir, FtpFolderSyncMode.Mirror, FtpLocalExists.Overwrite, FtpVerify.Delete); - answ = (result != null && result.Count > 0); + List result; + result = client.DownloadDirectory(localDir, remoteDir, FtpFolderSyncMode.Mirror); + if (forceUpdate) + { + result = client.DownloadDirectory(localDir, remoteDir, FtpFolderSyncMode.Update); + } + //answ = (result != null && result.Count > 0); + answ = result != null && result.Where(x => !x.IsSuccess).Count() == 0; } catch { } @@ -199,13 +210,26 @@ namespace EgwProxy.Ftp /// /// Path directory da inviare (ad es:@"C:\website\videos\") /// Nome remoto file per caricamento (ad es: @"/public_html/videos") - public bool sendDir(string localDir, string remoteDir) + /// Indica se sia richeisto udpate post mirroring + public bool sendDir(string localDir, string remoteDir, bool forceUpdate = false) { bool answ = false; - tryConnect(); - // upload della folder + files, cancellazione extra files = mirroring - var result = client.UploadDirectory(localDir, remoteDir, FtpFolderSyncMode.Mirror, FtpRemoteExists.OverwriteInPlace, FtpVerify.Delete); - answ = (result != null && result.Count > 0); + try + { + tryConnect(); + //var result = client.UploadDirectory(localDir, remoteDir, FtpFolderSyncMode.Mirror, FtpRemoteExists.OverwriteInPlace, FtpVerify.Retry); + // upload della folder + files, cancellazione extra files = mirroring + List result; + result = client.UploadDirectory(localDir, remoteDir, FtpFolderSyncMode.Mirror); + if (forceUpdate) + { + result = client.UploadDirectory(localDir, remoteDir, FtpFolderSyncMode.Update); + } + //answ = (result != null && result.Count > 0); + answ = result!=null && result.Where(x => !x.IsSuccess).Count()==0; + } + catch + { } // chiudo! client.Disconnect(); return answ;