pub struct ValidateFileUseCase;Expand description
Use case for validating .adapipe binary format files.
This use case validates the integrity and format of .adapipe files,
providing both quick validation and comprehensive streaming validation
options.
§Responsibilities
- Validate file exists and has correct extension
- Verify binary format structure
- Read and validate metadata
- Display file properties and processing history
- Optionally perform full streaming validation
§Dependencies
- BinaryFormatService: For format validation and metadata reading
Implementations§
Source§impl ValidateFileUseCase
impl ValidateFileUseCase
Sourcepub async fn execute(
&self,
file_path: PathBuf,
full_validation: bool,
) -> Result<()>
pub async fn execute( &self, file_path: PathBuf, full_validation: bool, ) -> Result<()>
Executes the validate file use case.
Validates an .adapipe binary format file, checking structure,
metadata, and optionally performing full streaming validation.
§Parameters
file_path- Path to .adapipe file to validatefull_validation- If true, perform comprehensive streaming validation
§Validation Steps
Step 1: Basic Format Validation
- File exists check
- Extension verification (.adapipe)
- Binary format structure validation
- Magic number verification
- Format version compatibility
Step 2: Metadata Reading
- Parse file header
- Extract metadata fields
- Display file properties:
- Original filename and size
- Original checksum
- Format and app versions
- Chunk size and count
- Pipeline ID
- Processing timestamp
- Compression/encryption algorithms
- Processing steps summary
Step 3: Full Validation (if requested)
- Stream through all chunks
- Decrypt encrypted data (if applicable)
- Decompress compressed data (if applicable)
- Verify original file checksum
- Note: Currently marked as TODO pending restoration service refactoring
§Returns
Ok(())- File is validErr(anyhow::Error)- Validation failed
§Errors
Returns errors for:
- File not found
- Invalid file extension (warning only)
- Corrupt binary format
- Invalid metadata
- Checksum mismatch (full validation)
- Unsupported format version
§Example Output
🔍 Validating .adapipe file format...
✅ File format is valid
📋 Reading file metadata...
Original filename: data.txt
Original size: 1.048 MB
Original checksum: abc123...
Format version: 1
App version: 1.0.1
Chunk size: 64.0 KB
Chunk count: 16
Pipeline ID: 01H2X3Y4Z5...
Processed at: 2025-10-05 14:30:00 UTC
🗜️ Compression: brotli
🔒 Encryption: aes256gcm
🔄 Processing steps: compression -> encryption -> checksum
💡 Use --full flag for complete streaming validation (decrypt/decompress/verify)
✅ .adapipe file validation completed successfully!Trait Implementations§
Auto Trait Implementations§
impl Freeze for ValidateFileUseCase
impl RefUnwindSafe for ValidateFileUseCase
impl Send for ValidateFileUseCase
impl Sync for ValidateFileUseCase
impl Unpin for ValidateFileUseCase
impl UnwindSafe for ValidateFileUseCase
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more