pub enum ContentValidationError {
InvalidContentSize(u64),
InvalidChunkIndex {
index: u64,
total: u64,
},
InvalidTimestamp(String),
InvalidSignatureLength {
expected: usize,
actual: usize,
},
InvalidPublicKeyLength {
expected: usize,
actual: usize,
},
InvalidBandwidth(String),
ContentTooLarge {
size: u64,
max: u64,
},
ContentTooSmall {
size: u64,
min: u64,
},
InvalidNonceLength {
expected: usize,
actual: usize,
},
InvalidHashLength {
expected: usize,
actual: usize,
},
}Expand description
Content validation errors.
§Examples
use chie_shared::ContentValidationError;
// Content size validation
fn validate_content_size(size: u64) -> Result<(), ContentValidationError> {
const MAX_SIZE: u64 = 100 * 1024 * 1024; // 100 MB
const MIN_SIZE: u64 = 1024; // 1 KB
if size > MAX_SIZE {
return Err(ContentValidationError::ContentTooLarge {
size,
max: MAX_SIZE,
});
}
if size < MIN_SIZE {
return Err(ContentValidationError::ContentTooSmall {
size,
min: MIN_SIZE,
});
}
Ok(())
}
// Chunk index validation
fn validate_chunk_index(index: u64, total_chunks: u64) -> Result<(), ContentValidationError> {
if index >= total_chunks {
Err(ContentValidationError::InvalidChunkIndex {
index,
total: total_chunks,
})
} else {
Ok(())
}
}
// Signature length validation
fn validate_signature(sig: &[u8]) -> Result<(), ContentValidationError> {
if sig.len() != 64 {
Err(ContentValidationError::InvalidSignatureLength {
expected: 64,
actual: sig.len(),
})
} else {
Ok(())
}
}
assert!(validate_content_size(50 * 1024).is_ok());
assert!(validate_content_size(500).is_err()); // Too small
assert!(validate_content_size(200 * 1024 * 1024).is_err()); // Too large
assert!(validate_chunk_index(5, 10).is_ok());
assert!(validate_chunk_index(15, 10).is_err());
assert!(validate_signature(&[0u8; 64]).is_ok());
assert!(validate_signature(&[0u8; 32]).is_err());Variants§
InvalidContentSize(u64)
InvalidChunkIndex
InvalidTimestamp(String)
InvalidSignatureLength
InvalidPublicKeyLength
InvalidBandwidth(String)
ContentTooLarge
ContentTooSmall
InvalidNonceLength
InvalidHashLength
Trait Implementations§
Source§impl Debug for ContentValidationError
impl Debug for ContentValidationError
Source§impl Display for ContentValidationError
impl Display for ContentValidationError
Source§impl Error for ContentValidationError
impl Error for ContentValidationError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()
Auto Trait Implementations§
impl Freeze for ContentValidationError
impl RefUnwindSafe for ContentValidationError
impl Send for ContentValidationError
impl Sync for ContentValidationError
impl Unpin for ContentValidationError
impl UnwindSafe for ContentValidationError
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