use std::error;
use std::fmt::{Display, Formatter};
#[derive(Debug)]
pub enum VideoError {
DescriptionTooLong(usize),
DurationTooShort(u16),
DurationTooLong(u16),
RatingTooLow(f32),
RatingTooHigh(f32),
UploaderNameTooLong(usize),
TooManyTags(usize),
}
impl error::Error for VideoError {}
impl Display for VideoError {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
match self {
Self::DescriptionTooLong(count) => {
write!(
f,
"description cannot be longer than 2048 characters: {}",
count
)
}
Self::DurationTooShort(duration) => {
write!(f, "duration is below 1 (second): {}", duration)
}
Self::DurationTooLong(duration) => {
write!(f, "duration is above 28,800 (seconds): {}", duration)
}
Self::RatingTooLow(rating) => {
write!(f, "rating is below 0.0: {}", rating)
}
Self::RatingTooHigh(rating) => {
write!(f, "rating is above 5.0: {}", rating)
}
Self::UploaderNameTooLong(count) => {
write!(f, "uploader name is longer than 255 characters: {}", count)
}
Self::TooManyTags(count) => {
write!(f, "must not have more than 32 tags: {}", count)
}
}
}
}