Refactoring ScpFileTransfer::parse_ls_output

This commit is contained in:
Vitaliy Busko
2021-01-18 11:31:35 +07:00
parent 367fb235f6
commit d7e5eacd79

View File

@@ -36,10 +36,13 @@ use crate::utils::parser::parse_lstime;
// Includes // Includes
use regex::Regex; use regex::Regex;
use ssh2::{Channel, Session}; use ssh2::{Channel, Session};
use std::io::{BufReader, BufWriter, Read, Write};
use std::net::TcpStream; use std::net::TcpStream;
use std::path::{Path, PathBuf}; use std::path::{Path, PathBuf};
use std::time::SystemTime; use std::time::SystemTime;
use std::{
io::{BufReader, BufWriter, Read, Write},
ops::Range,
};
/// ## ScpFileTransfer /// ## ScpFileTransfer
/// ///
@@ -92,61 +95,28 @@ impl ScpFileTransfer {
if metadata.get(2).unwrap().as_str().len() < 9 { if metadata.get(2).unwrap().as_str().len() < 9 {
return Err(()); return Err(());
} }
// Get unix pex
let unix_pex: (u8, u8, u8) = { let pex = |range: Range<usize>| {
let owner_pex: u8 = { let mut count: u8 = 0;
let mut count: u8 = 0; for (i, c) in metadata.get(2).unwrap().as_str()[range].chars().enumerate() {
for (i, c) in metadata.get(2).unwrap().as_str()[0..3].chars().enumerate() { match c {
match c { '-' => {}
'-' => {} _ => {
_ => { count += match i {
count += match i { 0 => 4,
0 => 4, 1 => 2,
1 => 2, 2 => 1,
2 => 1, _ => 0,
_ => 0,
}
} }
} }
} }
count }
}; count
let group_pex: u8 = {
let mut count: u8 = 0;
for (i, c) in metadata.get(2).unwrap().as_str()[3..6].chars().enumerate() {
match c {
'-' => {}
_ => {
count += match i {
0 => 4,
1 => 2,
2 => 1,
_ => 0,
}
}
}
}
count
};
let others_pex: u8 = {
let mut count: u8 = 0;
for (i, c) in metadata.get(2).unwrap().as_str()[6..9].chars().enumerate() {
match c {
'-' => {}
_ => {
count += match i {
0 => 4,
1 => 2,
2 => 1,
_ => 0,
}
}
}
}
count
};
(owner_pex, group_pex, others_pex)
}; };
// Get unix pex
let unix_pex = (pex(0..3), pex(3..6), pex(6..9));
// Parse mtime and convert to SystemTime // Parse mtime and convert to SystemTime
let mtime: SystemTime = match parse_lstime( let mtime: SystemTime = match parse_lstime(
metadata.get(7).unwrap().as_str(), metadata.get(7).unwrap().as_str(),