Embeddable libfw server: axum routing, bearer-token authorization,
HTTP range handling and streaming upload/download.
Example
use std::sync::Arc;
use axum::Router;
use libfw_core::auth::{Action, PathValidator, TokenVerifier, Validator};
use libfw_core::claims::{Permission, TokenClaims};
use libfw_server::{router, ServerState};
// 1. Token verifier: parse & verify bearer tokens into claims.
#[derive(Clone)]
struct MyVerifier;
impl TokenVerifier for MyVerifier {
fn verify(&self, token: &str) -> Result<TokenClaims, libfw_core::auth::AuthError> {
Ok(TokenClaims {
sub: token.to_string(),
exp: None,
permissions: vec![Permission::Read, Permission::Write],
allowed_paths: vec!["/".to_string()],
})
}
}
# fn main() -> Result<(), Box<dyn std::error::Error>> {
let state = Arc::new(ServerState::builder()
.storage(libfw_server::FsStorage::new("/srv/files"))
.verifier(MyVerifier)
.validator(PathValidator::new())
.build());
let app: Router = router(state);
// ... serve `app` with your preferred hyper/tokio setup
# Ok(())
# }