#![cfg_attr(docsrs, feature(doc_auto_cfg))]
#![forbid(unsafe_code)]
#![warn(missing_docs)]
#![warn(missing_debug_implementations)]
#![warn(unreachable_pub)]
#![warn(clippy::all)]
pub mod config;
pub mod error;
mod expiration;
mod extensions;
pub mod hooks;
mod lifecycle;
pub mod locking;
pub mod protocol;
pub mod runtime;
pub mod state;
pub mod storage;
#[cfg(feature = "checksum")]
mod checksum;
pub use {async_trait, bytes, chrono, futures_core, http, serde};
#[cfg(feature = "checksum")]
pub use checksum::{Hasher as ChecksumHasher, calculate as calculate_checksum};
pub use config::{ChecksumAlgorithm, Config, Extension, TUS_RESUMABLE, TUS_VERSION};
pub use error::{Error, ErrorResponse, Result};
pub use extensions::UploadConcat;
pub use hooks::{
Hook, HookChain, HookContext, HookEvent, HookExecutor, HookRequestInfo, HookUpload,
NoopHookExecutor, PreHookResult,
};
pub use lifecycle::{
ExpiredUploadReclamationOutcome, ExpiredUploadReclamationReport, reclaim_expired_uploads,
};
pub use locking::{LockGuard, Locker, NoopLocker};
pub use protocol::{
BodyFrame, BodyStream, DownloadRequest, DownloadResponse, Headers, Protocol, ProtocolHandle,
RequestBody, Response, TUS_SUCCESS_RESPONSE_HEADERS, UploadChecksum, UploadId,
};
pub use state::{
MetadataValue, StateStore, UPLOAD_STATE_SCHEMA_VERSION, UploadInventory, UploadMetadata,
UploadState, WriteMode,
};
pub use storage::{
AppendRequest, ByteStream, ChunkStream, ConcatRequest, Storage, StorageHandle, StorageReader,
};
pub mod prelude {
pub use crate::config::{Config, Extension};
pub use crate::error::{Error, Result};
pub use crate::hooks::{
HookChain, HookContext, HookEvent, HookExecutor, HookRequestInfo, HookUpload,
};
pub use crate::lifecycle::{
ExpiredUploadReclamationOutcome, ExpiredUploadReclamationReport, reclaim_expired_uploads,
};
pub use crate::locking::Locker;
pub use crate::protocol::{
BodyFrame, BodyStream, DownloadRequest, DownloadResponse, Headers, Protocol,
ProtocolHandle, RequestBody, Response, UploadChecksum, UploadId,
};
pub use crate::state::{StateStore, UploadInventory, UploadState, WriteMode};
pub use crate::storage::{AppendRequest, ConcatRequest, Storage, StorageHandle, StorageReader};
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_version_constant() {
assert_eq!(TUS_VERSION, "1.0.0");
assert_eq!(TUS_RESUMABLE, "1.0.0");
}
}