Advertisement
Guest User

Untitled

a guest
Jul 11th, 2016
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. extern crate ftp;
  2.  
  3. use std::fs::File;
  4. use std::str;
  5. use std::io::{Result, Write};
  6. use ftp::FtpStream;
  7.  
  8. fn main() {
  9. get_txt_ftp("127.0.0.1", "<username>", "<password>").unwrap_or_else(|err|
  10. panic!("{}", err)
  11. );
  12. }
  13.  
  14. fn get_txt_ftp(addr: &str, user: &str, pass: &str) -> Result<()> {
  15. let mut ftp_stream = try!(FtpStream::connect((addr, 21)));
  16. try!(ftp_stream.login(user, pass));
  17.  
  18. println!("Current dir: {}", try!(ftp_stream.pwd()));
  19.  
  20. let file_list = try!(ftp_stream.nlst(None));
  21.  
  22. let files: Vec<String> = file_list.into_iter()
  23. .filter(|name| name.ends_with(".txt")) // This could be replaced by regex if needed
  24. .collect();
  25.  
  26. for file in files {
  27. println!("Saving: {}", file);
  28. try!(ftp_stream.retr(file.as_str(), |stream| {
  29. let mut file = File::create(file.clone()).unwrap();
  30. let mut buf = [0; 2048];
  31.  
  32. loop {
  33. match stream.read(&mut buf) {
  34. Ok(0) => break,
  35. Ok(n) => file.write_all(&buf[0..n]).unwrap(),
  36. Err(err) => return Err(err)
  37. };
  38. }
  39.  
  40. Ok(())
  41. }));
  42. }
  43.  
  44. ftp_stream.quit()
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement