Пример #1
0
        /// <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);
            }
        }
Пример #2
0
        /// <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);
            }
        }
Пример #3
0
        /// <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();
            }
        }
Пример #4
0
        /// <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);
            }
        }