twitter_api_v1/
tokio_fs_util.rs

1use std::{
2    io::{Error as IoError, ErrorKind as IoErrorKind},
3    path::PathBuf,
4};
5
6use tokio::fs::metadata;
7
8#[derive(Debug)]
9pub struct Info {
10    pub file_size: u64,
11    pub file_name: Option<String>,
12}
13
14//
15pub async fn info(path: &PathBuf) -> Result<Info, IoError> {
16    let file_metadata = metadata(&path).await?;
17
18    if !file_metadata.is_file() {
19        return Err(IoError::new(IoErrorKind::Other, "is_file required"));
20    }
21
22    let file_size = file_metadata.len();
23    let file_name = path
24        .file_name()
25        .and_then(|x| x.to_str())
26        .map(|x| x.to_owned());
27
28    Ok(Info {
29        file_size,
30        file_name,
31    })
32}