fetchlib 0.0.13

A lib for remote server connection through ssh
Documentation
use crate::remote_file_system::Error;
use crate::{fs::FileMetaData, remote_file_system::RemoteFileSystem};

use crate::sftp::Sftp;

impl RemoteFileSystem for Sftp {
    fn file_metadata(
        &self,
        fpath: &std::path::Path,
    ) -> Result<crate::fs::FileMetaData, crate::remote_file_system::Error> {
        match self.sftp.stat(fpath) {
            Ok(stat) => {
                let mut meta_data = FileMetaData::from(stat);
                meta_data.path = fpath.to_path_buf();
                Ok(meta_data)
            }
            Err(e) => Err(Error::from(e)),
        }
    }

    fn listdir(&self, path: &std::path::Path) -> Result<Vec<crate::fs::FileMetaData>, Error> {
        match self.sftp.readdir(path) {
            Ok(contents) => {
                let output: Vec<FileMetaData> = contents
                    .into_iter()
                    .map(|c| {
                        let mut m = FileMetaData::from(c.1);
                        m.path = c.0;
                        m
                    })
                    .collect();
                Ok(output)
            }
            Err(e) => Err(Error::from(e)),
        }
    }
}