protected virtual void OnFailure(object sender, ServiceEventArgs eventArgs) { ServiceEventHandler handler = OnServiceFailure; if (OnServiceFailure != null) { handler(sender, eventArgs); } }
public List <string> GetFiles(Guid tokenGuid, string folderPath, Guid emilProvider, string leadAdapterName, string accountName) { var filesList = new List <string>(); var registration = GetService(tokenGuid); string host = registration.Host.Trim(); if (!host.StartsWith("ftp://")) { host = "ftp://" + host; } try { string username = registration.UserName.Normalize(); string password = registration.Password.Normalize(); FtpWebRequest request = (FtpWebRequest)WebRequest.Create(Path.Combine(host, folderPath)); request.Timeout = 30000; request.Method = WebRequestMethods.Ftp.ListDirectory; request.UsePassive = true; request.Credentials = new NetworkCredential(username, password); FtpWebResponse response = (FtpWebResponse)request.GetResponse(); Stream responseStream = response.GetResponseStream(); StreamReader reader = new StreamReader(responseStream); string line = string.Empty; while ((line = reader.ReadLine()) != null) { try { var filename = Path.GetFileName(line); if (Path.GetExtension(filename) == ".xml") { XmlDocument doc = new XmlDocument(); var ftpfilepath = Path.Combine(host, Path.GetFileName(filename)); ftpfilepath = ftpfilepath.Replace("#", "%23"); FtpWebRequest filerequest = (FtpWebRequest)WebRequest.Create(ftpfilepath); filerequest.Method = WebRequestMethods.Ftp.DownloadFile; filerequest.Credentials = new NetworkCredential(username, password); FtpWebResponse fileresponse = (FtpWebResponse)filerequest.GetResponse(); Stream fileresponseStream = fileresponse.GetResponseStream(); StreamReader filereader = new StreamReader(fileresponseStream); string xmlcontent = filereader.ReadToEnd(); filereader.Close(); fileresponseStream.Close(); fileresponse.Close(); doc.LoadXml(xmlcontent); filesList.Add(Path.GetFileName(line)); } } catch (XmlException ex) { ServiceEventArgs args = new ServiceEventArgs(); args.ServiceStatus = ServiceErrorStatus.InvalidXMLFile; OnFailure(this, args); Logger.Current.Error("The xml file is invalid , account:" + accountName + " LeadAdapter : " + leadAdapterName, ex); Sendmail("Invalid xml file details" + ex, "Invalid xml file from " + leadAdapterName + " LeadAdapter", emilProvider, accountName, leadAdapterName); } catch (WebException ex) { var errorResponse = (FtpWebResponse)ex.Response; if (errorResponse.StatusCode == FtpStatusCode.NotLoggedIn) { ServiceEventArgs args = new ServiceEventArgs(); args.ServiceStatus = ServiceErrorStatus.InvalidCredentials; OnFailure(this, args); Logger.Current.Error("The credentials are invalid, account:" + accountName + " LeadAdapter : " + leadAdapterName, ex); Sendmail("Credentials details" + ex, "Invalid credentials for " + leadAdapterName + " LeadAdapter", emilProvider, accountName, leadAdapterName); } else { Logger.Current.Error("Web exception in the FTP Service, account:" + accountName + " LeadAdapter : " + leadAdapterName, ex); } } catch (Exception ex) { Logger.Current.Error("The xml file is invalid , account:" + accountName + " LeadAdapter : " + leadAdapterName, ex); Sendmail("Invalid xml file details" + ex, "Invalid xml file from " + leadAdapterName + " LeadAdapter", emilProvider, accountName, leadAdapterName); } } //Clean-up reader.Close(); responseStream.Close(); //redundant response.Close(); } catch (WebException ex) { var errorResponse = (FtpWebResponse)ex.Response; if (errorResponse.StatusCode == FtpStatusCode.NotLoggedIn) { ServiceEventArgs args = new ServiceEventArgs(); args.ServiceStatus = ServiceErrorStatus.InvalidCredentials; OnFailure(this, args); Logger.Current.Error("The credentials are invalid, account:" + accountName, ex); Sendmail("Credentials details" + ex, "Invalid credentials for " + leadAdapterName + " LeadAdapter", emilProvider, accountName, leadAdapterName); } else { Logger.Current.Error("Exception in the get files method, token: " + tokenGuid + ",status: " + errorResponse.StatusCode + " Account name : " + accountName + " LeadAdapter : " + leadAdapterName, ex); } } catch (Exception ex) { Logger.Current.Error("Exception in the get files method, token: " + tokenGuid + " Account name : " + accountName + " LeadAdapter : " + leadAdapterName, ex); } return(filesList); }