[][src]Crate ftp_cmd_list_parse

ftp-cmd-list-parse

This is a library that can parse strings that represents answers from FTP servers by LIST command request.

drwxr-xr-x  10 root   root    4096 Dec 21  2012 usr
brw-rw----  1 root disk    8,   0 Nov 24 10:13 sda
-rw-rw-rw-   1 owner   1234    7045120 Sep 02  2012 music.mp3
lrwxrwxrwx 1 root root 51 Apr  4 23:57 www.nodeftp.github -> /etc/nginx/sites-available/www.nodeftp.github

Currently supports UNIX-style only. MSDOS-style is coming soon.

Example of use:

use ftp_cmd_list_parse::FtpEntry;

let ftp_response: &'static str = "drwxr-xr-x  10 root   root    4096 Dec 21  2012 usr";
if let Some(ftp_entry) = FtpEntry::new(ftp_response) {
    println!("{}", ftp_entry.name()); // "usr"
    println!("{:?}", ftp_entry.kind()); // FtpEntryKind::Directory

    assert!(ftp_entry.is_unix_type()); // true
}

You need convert FtpEntry to FtpEntryUnix to see additional fields that MSDOS FTP server doesn't support:

    // also you can create `FtpEntry` by use `TryFrom` or `TryInto` traits.
    use std::convert::TryFrom;
    use ftp_cmd_list_parse::FtpEntry;


    if let Ok(ftp_entry) = FtpEntry::try_from(ftp_response) {
        match ftp_entry.try_to_unix_type() {
            Ok(ftp_entry_unix) => { // `FtpEntryUnix` type
                println!("Owner: {}", ftp_entry_unix.owner);
                println!("group: {}", ftp_entry_unix.group);
                println!("Permissions: {}", ftp_entry_unix.permissions.as_str());
            },
            Err(ftp_entry) => { // `FtpEntry` type
                // Here we got our `FtpEntry` back.
                println!("FtpEntry is not a UNIX-format!");
            }
        }
    }

If you ensure that you work with UNIX FTP server, you can create FtpEntryUnix struct directly (Or FtpEntryMsdos in the future):

use ftp_cmd_list_parse::FtpEntryUnix;
if let Some(ftp_entry_unix) = FtpEntryUnix::new(ftp_response) {
    println!("Owner: {}", ftp_entry_unix.owner);
    println!("group: {}", ftp_entry_unix.group);
    println!("Permissions: {}", ftp_entry_unix.permissions);
}

Structs

FtpEntryMsdos

Represents entry from Msdos-like FTP server.

FtpEntryPermissions

Permissions of the Unix-like entry.

FtpEntryUnix

Represents entry from Unix-like FTP server.

Enums

FtpEntry

Represents parsed string as ftp entry.

FtpEntryKind

Type of the ftp entry.

Traits

FtpEntryInfo

All fields that supports both servers: Unix & MSDOS