private bool GetFileFromFTP(string file, IUserConfiguration user, IFtpHelper ftpHelper, ProcessResult result)
        {
            var filePathHelper = new FilePathHelper(_configuration, user.Name);

            string localFileName;

            if (!ValidateFile(file, filePathHelper, result, out localFileName))
            {
                return(false);
            }

            _logger.Debug($"Start to download {file} for user {user.Name}");

            bool downloadResult = ftpHelper.DownloadFile(file, localFileName);

            if (downloadResult && File.Exists(localFileName))
            {
                if (Path.GetExtension(file).Equals(".zip", StringComparison.InvariantCultureIgnoreCase))
                {
                    if (UnzipFile(localFileName, filePathHelper.GetDownloadsFolder()) == 0)
                    {
                        string message = $"{DateTime.UtcNow}:Problems to unzip the file {file}.";
                        result.Type = ResulType.UNZIP;
                        result.WriteError(message);
                        return(false);
                    }

                    try
                    {
                        File.Delete(localFileName); // Delete zip file
                    }
                    catch { }
                }
                else
                {
                    string newFileName = localFileName.Replace(".downloading", ".processing");

                    File.Move(localFileName, newFileName);
                }
            }
            else
            {
                string message = $"{DateTime.UtcNow}:Problems to download the file {file}.";
                result.Type = ResulType.DOWNLOAD;
                result.WriteError(message);
                _logger.Error($"Download problems with file {file}.");

                try
                {
                    // Delete wrong file to retry.
                    File.Delete(localFileName);
                }
                catch { }

                return(false);
            }

            return(true);
        }
        private void RemoveFileFromFtp(string file, IUserConfiguration user, IFtpHelper ftpHelper)
        {
            if (user.HasDeleteFtp)
            {
                _logger.Debug($"Remove file {file} from FTP ");

                ftpHelper.DeleteFile(file);
            }
        }
예제 #3
0
        public Crawler(ICrawlLinkRepository crawlLinkRepository, IMatchRepository matchRepository, IFtpHelper ftpHelper)
        {
            _crawlLinkRepository = crawlLinkRepository;
            _matchRepository     = matchRepository;
            _ftpHelper           = ftpHelper;

            _cookies = new CookieCollection();
            _htmlWeb = new HtmlWeb();

            InitialHttpWeb();
        }
예제 #4
0
        protected void UploadFileToFtp(string fileName, string ftpFolder, IFtpHelper ftpHelper)
        {
            if (File.Exists(fileName) && !string.IsNullOrEmpty(ftpFolder))
            {
                string ftpFileName = $@"{ftpFolder}/{Path.GetFileName(fileName)}";

                _logger.Debug($"Upload file {ftpFileName} to ftp.");

                ftpHelper.UploadFileAsync(fileName, ftpFileName);
            }
        }
예제 #5
0
        private void UploadErrosToFTP(string fileName, IUserConfiguration user, IFtpHelper ftpHelper)
        {
            if (user.Errors != null && File.Exists(fileName))
            {
                _logger.Debug($"Upload error file {fileName}");

                var filePathHelper = new FilePathHelper(_configuration, user.Name);

                string ftpFileName = $@"{user.Errors.Folder}/{Path.GetFileName(fileName)}";

                ftpHelper.UploadFile(fileName, ftpFileName);
            }
        }
예제 #6
0
 public FtpFileMonitor(
     IFileMonitorsRepository fileMonitorsRepository,
     IGameServerStatusRepository gameServerStatusRepository,
     ILogFileMonitorStateRepository logFileMonitorStateRepository,
     IServiceProvider serviceProvider,
     IFtpHelper ftpHelper)
 {
     _fileMonitorsRepository        = fileMonitorsRepository ?? throw new ArgumentNullException(nameof(fileMonitorsRepository));
     _gameServerStatusRepository    = gameServerStatusRepository ?? throw new ArgumentNullException(nameof(gameServerStatusRepository));
     _logFileMonitorStateRepository = logFileMonitorStateRepository ?? throw new ArgumentNullException(nameof(logFileMonitorStateRepository));
     _serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));
     _ftpHelper       = ftpHelper ?? throw new ArgumentNullException(nameof(ftpHelper));
 }
예제 #7
0
 public BanFileMonitor(
     ILogger <BanFileMonitor> logger,
     IBanFileMonitorsRepository banFileMonitorsRepository,
     IFtpHelper ftpHelper,
     IBanFileIngest banFileIngest,
     IBanFilesRepository banFilesRepository)
 {
     _logger = logger ?? throw new ArgumentNullException(nameof(logger));
     _banFileMonitorsRepository = banFileMonitorsRepository ?? throw new ArgumentNullException(nameof(banFileMonitorsRepository));
     _ftpHelper          = ftpHelper ?? throw new ArgumentNullException(nameof(ftpHelper));
     _banFileIngest      = banFileIngest;
     _banFilesRepository = banFilesRepository ?? throw new ArgumentNullException(nameof(banFilesRepository));
 }
예제 #8
0
        //protected void WriteError(string errorFileName, string message)
        //{
        //    if (!string.IsNullOrEmpty(errorFileName))
        //    {
        //        using (StreamWriter sw = new StreamWriter(errorFileName, true))
        //        {
        //            sw.WriteLine(message);
        //        }
        //    }
        //}

        private void UploadResultsToFTP(string file, IUserConfiguration user, IFtpHelper ftpHelper)
        {
            if (File.Exists(file) && user.Results != null)
            {
                _logger.Debug($"Start to process results for file {file}");

                var filePathHelper = new FilePathHelper(_configuration, user.Name);

                string resultsPath = filePathHelper.GetResultsFilesFolder();

                string resultsFilePath = user.Results.SaveAndGetName(file, resultsPath);

                string ftpFileName = $@"{user.Results.Folder}/{Path.GetFileName(resultsFilePath)}";

                if (!File.Exists(resultsFilePath))
                {
                    resultsFilePath = file;
                }

                ftpHelper.UploadFile(resultsFilePath, ftpFileName);
            }
        }
예제 #9
0
 private void UploadStartFileToFTP(string fileName, IUserConfiguration user, IFtpHelper ftpHelper)
 {
 }
예제 #10
0
 public DbRepository(MySqlContext dbContext, IFtpHelper ftpHelper, IHtmlHelper htmlHelper)
 {
     _dbContext  = dbContext;
     _ftpHelper  = ftpHelper;
     _htmlHelper = htmlHelper;
 }
 public Crawler(ICrawlLinkRepository crawlLinkRepository, IMatchRepository matchRepository, IFtpHelper ftpHelper)
 {
     _crawlLinkRepository = crawlLinkRepository;
     _matchRepository     = matchRepository;
     _ftpHelper           = ftpHelper;
 }
        private void ProcessAckFile(string folderName, string fileName, IUserConfiguration user, IFtpHelper ftpHelper)
        {
            string ftpFileName   = $@"{folderName}/{fileName}";
            string localFileName = $@"{new FilePathHelper(_configuration, user.Name).GetReportsFilesFolder()}\{fileName}";

            _logger.Debug($"Process ack file {ftpFileName}");

            ftpHelper.DownloadFile(ftpFileName, localFileName);

            if (File.Exists(localFileName))
            {
                if (user.HasDeleteFtp)
                {
                    ftpHelper.DeleteFile(ftpFileName);
                }

                try
                {
                    _logger.Debug($"Delete local file {fileName}");

                    File.Delete(localFileName);
                }
                catch (Exception e)
                {
                    _logger.Error($"Error trying to delete file {localFileName} -- {e}");
                }
            }
        }
        private void DownloadUserFiles(string folder, List <string> files, IUserConfiguration user, IFtpHelper ftpHelper)
        {
            if (files.Count == 0)
            {
                return;
            }

            Thread threadDownload = new Thread(new ThreadStart(() =>
            {
                string downloadFolder = new FilePathHelper(_configuration, user.Name).GetDownloadsFolder();

                foreach (string file in files)
                {
                    if (Directory.GetFiles(downloadFolder).Length >= 4)
                    {
                        break;
                    }

                    if (user.Ack != null && IsAckFile(file, user.Ack))
                    {
                        ProcessAckFile(folder, file, user, ftpHelper);
                        continue;
                    }

                    var result           = new ProcessResult();
                    result.ErrorFileName = GetErrorsFileName(file, user);

                    string ftpFileName = $"{folder}/{file}";

                    if (GetFileFromFTP(ftpFileName, user, ftpHelper, result))
                    {
                        RemoveFileFromFtp(ftpFileName, user, ftpHelper);
                    }
                }
            }));

            threadDownload.Start();
        }