Create file metadata endpoint

This allows retrieving create/modify date as well as file size for any
file in the BASE_PATH.
This commit is contained in:
Cameron Cordes
2021-05-19 08:53:20 -04:00
parent 9a40614d1e
commit 9d823fdc51
4 changed files with 62 additions and 13 deletions

View File

@@ -1,5 +1,6 @@
use std::str::FromStr;
use std::{fs, str::FromStr};
use chrono::{DateTime, Utc};
use log::error;
use actix_web::error::ErrorUnauthorized;
@@ -92,6 +93,29 @@ pub struct AddFavoriteRequest {
pub path: String,
}
#[derive(Debug, Serialize)]
pub struct MetadataResponse {
pub created: Option<i64>,
pub modified: Option<i64>,
pub size: u64,
}
impl From<fs::Metadata> for MetadataResponse {
fn from(metadata: fs::Metadata) -> Self {
MetadataResponse {
created: metadata.created().ok().map(|created| {
let utc: DateTime<Utc> = created.into();
utc.timestamp()
}),
modified: metadata.modified().ok().map(|modified| {
let utc: DateTime<Utc> = modified.into();
utc.timestamp()
}),
size: metadata.len(),
}
}
}
#[cfg(test)]
mod tests {
use super::Claims;