Advertisement
Guest User

Untitled

a guest
Mar 18th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.96 KB | None | 0 0
  1. public class FtpInputDataHandler : IInputDataHandler
  2. {
  3. private const string _server = "ftp://localhost";
  4. private const string _userName = "anonymous";
  5. private const string _userPassword = "";
  6.  
  7.  
  8. public FileDescription GetFileDescription(string guid)
  9. {
  10. return new FileDescription(guid);
  11. }
  12.  
  13. public Stream GetFile(string guid)
  14. {
  15. Uri uri = GetUriFromGuid(guid);
  16. FtpWebRequest request = GetFtpRequest(uri, WebRequestMethods.Ftp.DownloadFile);
  17.  
  18. Stream reader = request.GetResponse().GetResponseStream();
  19. MemoryStream result = new MemoryStream();
  20.  
  21. int bytesRead = 0;
  22. byte[] buffer = new byte[2048];
  23. while (true)
  24. {
  25. bytesRead = reader.Read(buffer, 0, buffer.Length);
  26.  
  27. if (bytesRead == 0)
  28. break;
  29.  
  30. result.Write(buffer, 0, bytesRead);
  31. }
  32.  
  33. return result;
  34. }
  35.  
  36. public DateTime GetLastModificationDate(string guid)
  37. {
  38. Uri uri = GetUriFromGuid(guid);
  39. FtpWebRequest request = GetFtpRequest(uri, WebRequestMethods.Ftp.GetDateTimestamp);
  40.  
  41. using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
  42. return response.LastModified;
  43. }
  44.  
  45. public List<FileDescription> LoadFileTree(FileTreeOptions fileTreeOptions)
  46. {
  47. Uri uri = Uri.IsWellFormedUriString(fileTreeOptions.Path, UriKind.Absolute) ? new Uri(fileTreeOptions.Path) : GetUriFromGuid(fileTreeOptions.Path);
  48. FtpWebRequest request = GetFtpRequest(uri, WebRequestMethods.Ftp.ListDirectory);
  49.  
  50. List<FileDescription> result = new List<FileDescription>();
  51.  
  52. using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
  53. {
  54. Stream responseStream = response.GetResponseStream();
  55.  
  56. if (responseStream != null)
  57. {
  58. using (StreamReader reader = new StreamReader(responseStream))
  59. {
  60. string guid;
  61. while ((guid = reader.ReadLine()) != null)
  62. {
  63. result.Add(new FileDescription(guid, !guid.Contains(".")));
  64. }
  65. }
  66. }
  67. }
  68.  
  69. return result;
  70. }
  71.  
  72. private Uri GetUriFromGuid(string guid)
  73. {
  74. return Uri.IsWellFormedUriString(guid, UriKind.Absolute)
  75. ? new Uri(guid)
  76. : new Uri(string.Format("{0}/{1}", _server, guid));
  77. }
  78.  
  79. private FtpWebRequest GetFtpRequest(Uri uri, string method)
  80. {
  81. FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
  82. request.Credentials = new NetworkCredential(_userName, _userPassword);
  83. request.Method = method;
  84. return request;
  85. }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement