ValidateFileUseCase

Struct ValidateFileUseCase 

Source
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

Source

pub fn new() -> Self

Creates a new Validate File use case.

Source

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 validate
  • full_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 valid
  • Err(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§

Source§

impl Default for ValidateFileUseCase

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,