/// <summary> /// Delete All Source Folder Files /// </summary> public void DeleteSourceFolderFiles() { EventLogMessage.WriteLogDebug("ConnectorFilesystem: DeleteSourceFolderFiles method"); // Read connection configuration _connectData = ConfigData.ReadConfigFileSystem(); string folderPath = (_connectData.SourceFolder.Last() == "\\"[0]) ? _connectData.SourceFolder : _connectData.SourceFolder + "\\"; EventLogMessage.WriteLogDebug("ConnectorFilesystem: DeleteSourceFolderFiles method, Source Folder Path: " + folderPath); foreach (string sourceFile in Directory.EnumerateFiles(folderPath)) { EventLogMessage.WriteLog("Delete Source Folder File: " + sourceFile); File.Delete(sourceFile); } }
/// <summary> /// Setup SFTP Connection based on Congfiguration File Parameters /// </summary> public void SetupConnection() { EventLogMessage.WriteLogDebug("ConnectorSFTP: SetupConnection method"); // Read connection configuration _connectData = ConfigData.ReadConfigSFTP(); client = new SftpClient(_connectData.Host, _connectData.Port, _connectData.Username, _connectData.Password); client.ConnectionInfo.Timeout = TimeSpan.FromSeconds(_connectData.Timeout); client.Connect(); EventLogMessage.WriteLog("Connected to " + _connectData.Host); if (_connectData.WorkingDirectory != "") { client.ChangeDirectory(_connectData.WorkingDirectory); } }
/// <summary> /// The method UploadFile implements file upload functionality /// </summary> /// <param name="fileName">Local file Path to upload</param> public void UploadFile(string fileName) { Helpers.EventLogMessage.WriteLogDebug("ConnectorFTP: UploadFile method"); EventLogMessage.WriteLog("Upload File " + fileName + "..."); _connectData = ConfigData.ReadConfigFTP(); string absoluteFileName = Path.GetFileName(fileName); string targetURL = (!string.IsNullOrEmpty(_connectData.Folder)) ? string.Format(@"ftp://{0}/{1}/{2}", _connectData.URL, _connectData.Folder, absoluteFileName) : string.Format(@"ftp://{0}/{1}", _connectData.URL, absoluteFileName); WebRequest request = WebRequest.Create(new Uri(targetURL)) as FtpWebRequest; request.Method = WebRequestMethods.Ftp.UploadFile; request.Credentials = new NetworkCredential(_connectData.UserName, _connectData.Password); using (FileStream fs = File.OpenRead(fileName)) { byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); fs.Close(); Stream requestStream = request.GetRequestStream(); requestStream.Write(buffer, 0, buffer.Length); requestStream.Flush(); requestStream.Close(); } }
/// <summary> /// Main Application Workflow /// </summary> /// <param name="arg">Any Arguments, not being used in current procedure</param> private void Process(object arg) { //private ConnectDataNLS _connectData; //for (;;) //{ //if (StopRequest.WaitOne(ConfigData.LoopInterval * 1000)) return; List <string> sourceFiles; ConnectorFTP connectorFTP = null; ConnectorSFTP connectorSFTP = null; var connectorFileSystem = new ConnectorFileSystem(); var retval = string.Empty; try { EventLogMessage.DebugMode = ConfigData.DebugMode; EventLogMessage.WriteLog(String.Format("Method Main is started - {0}", DateTime.Now)); // Establish FTP or SFTP Connection if (ConfigData.IsSFTP) { connectorSFTP = new ConnectorSFTP(); } else { connectorFTP = new ConnectorFTP(); } // Setup SFTP Connection if necessary EventLogMessage.WriteLog("Open FTP Conection..."); if (ConfigData.IsSFTP) { connectorSFTP.SetupConnection(); } // Get List Of Source Files EventLogMessage.WriteLog("Get Report Files in Source Folder..."); sourceFiles = connectorFileSystem.GetSourceFolderFiles(); if (sourceFiles.Count > 0) { // Upload Source Files to FTP EventLogMessage.WriteLog("Uploading Files..."); foreach (string strExcelFile in sourceFiles) { EventLogMessage.WriteLog("Converting File " + strExcelFile + "..."); string strCsvFile = ExcelToCsvFileHelper.CreateCsvFromExcelFile(strExcelFile, 8); EventLogMessage.WriteLog("Uploading File " + strCsvFile + "..."); if (ConfigData.IsSFTP) { connectorSFTP.UploadExistingFile(strCsvFile); } else { connectorFTP.UploadFile(strCsvFile); } } // Delete Source Files EventLogMessage.WriteLog("Deleting Source Files..."); connectorFileSystem.DeleteSourceFolderFiles(); } else { EventLogMessage.WriteLog("No Report Files Found..."); } // Close SFTP Connection if necessary EventLogMessage.WriteLog("Close FTP Connection..."); if (ConfigData.IsSFTP) { connectorSFTP.Close(); } // Send Status Email EventLogMessage.WriteLog("Send Email..."); MailHelper.Send_Email_Using_Template(sourceFiles); EventLogMessage.WriteLog(String.Format("Method Main is finished - {0}", DateTime.Now)); } catch (System.TimeoutException tex) { // Abotr Active SFTP Connetion if (connectorSFTP != null) { connectorSFTP.Abort(); } EventLogMessage.WriteLogError("Method Main was thrown Timeout exception.", tex); } catch (CommunicationException cex) { // Abotr Active SFTP Connetion if (connectorSFTP != null) { connectorSFTP.Abort(); } EventLogMessage.WriteLogError("Method Main was thrown Communication exception.", cex); } catch (Exception ex) { // Abotr Active SFTP Connetion if (connectorSFTP != null) { connectorSFTP.Abort(); } EventLogMessage.WriteLogError("Method Main was thrown exception.", ex); } }