Expand description
Shared data structures, traits, protocol constants and streaming compression abstractions for the libfw transfer library.
libfw-core is the foundation crate consumed by both
libfw-server (server routing /
middleware) and libfw-client (WASM
engine + JS SDK). It contains no I/O of its own: it defines the contracts.
§Highlights
TokenClaims,Actionand theValidatortrait for fine-grained bearer-token authorization.StorageBackendandUploadSinktraits for pluggable storage.Compressor/Decompressorstreaming traits backed byzrip(zstd) with constant-memory guarantees.- Protocol constants:
CHUNK_SIZE,HEADER_COMPRESS,HEADER_FILE_METAand friends. - Transfer metadata (
FileMeta,TransferPlan,ChunkMeta).
§Example
use libfw_core::auth::{Action, PathValidator, Validator};
use libfw_core::claims::{TokenClaims, Permission};
let claims = TokenClaims {
sub: "user-42".into(),
exp: None,
permissions: vec![Permission::Read, Permission::Write],
allowed_paths: vec!["/docs/".into()],
};
let validator = PathValidator::new();
assert!(validator.validate(&claims, "/docs/spec.pdf", Action::Read).is_ok());Re-exports§
pub use auth::Action;pub use auth::AuthError;pub use auth::PathValidator;pub use auth::TokenVerifier;pub use auth::Validator;pub use claims::Permission;pub use claims::TokenClaims;pub use compress::CompressionFormat;pub use compress::Compressor;pub use compress::Decompressor;pub use error::CompressError;pub use error::DecompressError;pub use error::StorageError;pub use metadata::ChunkMeta;pub use metadata::FileMeta;pub use metadata::TransferPlan;pub use range::RangeSpec;pub use storage::DirEntry;pub use storage::StorageBackend;pub use storage::UploadSink;pub use storage::WriteMode;pub use constants::*;
Modules§
- auth
- Authorization contracts: actions, validator trait and path rules.
- claims
- Bearer-token claims and permissions.
- compress
- Streaming compression abstractions backed by
zrip(zstd). - constants
- Protocol constants shared between server and client.
- error
- Error types for the libfw core contracts.
- metadata
- Transfer metadata: file info, chunk plans and ETags.
- range
- Byte-range representation shared by server and client.
- storage
- Storage abstraction for
libfw-server.