mirror of
https://github.com/MedzikUser/HomeDisk.git
synced 2024-08-14 21:46:53 +00:00
server (/fs/list): return filesize
This commit is contained in:
parent
ad5a088a51
commit
e8f8a4b007
6 changed files with 33 additions and 5 deletions
16
Cargo.lock
generated
16
Cargo.lock
generated
|
@ -218,6 +218,15 @@ version = "3.9.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899"
|
||||
|
||||
[[package]]
|
||||
name = "byte-unit"
|
||||
version = "4.0.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "95ebf10dda65f19ff0f42ea15572a359ed60d7fc74fdc984d90310937be0014b"
|
||||
dependencies = [
|
||||
"utf8-width",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "byteorder"
|
||||
version = "1.4.3"
|
||||
|
@ -623,6 +632,7 @@ dependencies = [
|
|||
"axum",
|
||||
"axum-auth",
|
||||
"base64",
|
||||
"byte-unit",
|
||||
"homedisk-database",
|
||||
"homedisk-types",
|
||||
"hyper",
|
||||
|
@ -1828,6 +1838,12 @@ dependencies = [
|
|||
"percent-encoding",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "utf8-width"
|
||||
version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5190c9442dcdaf0ddd50f37420417d219ae5261bbf5db120d0f9bab996c9cba1"
|
||||
|
||||
[[package]]
|
||||
name = "uuid"
|
||||
version = "1.0.0"
|
||||
|
|
|
@ -16,3 +16,4 @@ homedisk-types = { path = "../types", features = ["axum"] }
|
|||
axum-auth = "0.2.0"
|
||||
jsonwebtoken = "8.1.0"
|
||||
base64 = "0.13.0"
|
||||
byte-unit = "4.0.14"
|
||||
|
|
|
@ -2,11 +2,12 @@ use std::fs;
|
|||
|
||||
use axum::{extract::rejection::JsonRejection, Extension, Json};
|
||||
use axum_auth::AuthBearer;
|
||||
use byte_unit::Byte;
|
||||
use homedisk_database::{Database, Error};
|
||||
use homedisk_types::{
|
||||
config::types::Config,
|
||||
errors::{AuthError, FsError, ServerError},
|
||||
fs::list::{Request, Response},
|
||||
fs::list::{FileInfo, Request, Response},
|
||||
};
|
||||
|
||||
use crate::middleware::{validate_json, validate_jwt};
|
||||
|
@ -43,11 +44,15 @@ pub async fn handle(
|
|||
.map_err(|err| ServerError::FsError(FsError::UnknowError(err.to_string())))?;
|
||||
|
||||
let name = path.path().display().to_string().replace(&user_path, "");
|
||||
let filesize = Byte::from_bytes(metadata.len().into()).get_appropriate_unit(true);
|
||||
|
||||
if metadata.is_dir() {
|
||||
dirs.push(name)
|
||||
} else {
|
||||
files.push(name)
|
||||
files.push(FileInfo {
|
||||
name,
|
||||
size: filesize.to_string(),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ use axum::{http::HeaderValue, routing::get, Extension, Router, Server};
|
|||
use homedisk_database::Database;
|
||||
use homedisk_types::config::types::Config;
|
||||
use log::{debug, info};
|
||||
use tower_http::cors::{CorsLayer, AllowOrigin};
|
||||
use tower_http::cors::{AllowOrigin, CorsLayer};
|
||||
|
||||
async fn health_check() -> &'static str {
|
||||
"I'm alive!"
|
||||
|
|
|
@ -7,7 +7,7 @@ pub use fs::Error as FsError;
|
|||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, thiserror::Error)]
|
||||
#[serde(tag = "error", content = "error-message", rename_all = "kebab-case")]
|
||||
#[serde(tag = "error", content = "error_message", rename_all = "kebab-case")]
|
||||
pub enum ServerError {
|
||||
#[error("auth error: {0}")]
|
||||
AuthError(#[from] AuthError),
|
||||
|
|
|
@ -7,6 +7,12 @@ pub struct Request {
|
|||
|
||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||
pub struct Response {
|
||||
pub files: Vec<String>,
|
||||
pub files: Vec<FileInfo>,
|
||||
pub dirs: Vec<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||
pub struct FileInfo {
|
||||
pub name: String,
|
||||
pub size: String,
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue