libfw-server 0.1.2

Embeddable libfw server handlers/middleware (axum integration)
Documentation

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(())
# }