use serde::{Deserialize, Serialize};
const MAXIMUM_REALTIME_URL_LENGTH: usize = 256;
#[derive(Debug, Clone, Deserialize, Serialize, Hash, PartialEq, Eq)]
pub struct RealtimeUrlRequest {
#[serde(rename = "realtimeURL")]
pub realtime_url: String,
}
impl RealtimeUrlRequest {
pub fn new(realtime_url: String) -> Result<Self, RealtimeUrlRequestValidationError> {
if realtime_url.chars().count() > MAXIMUM_REALTIME_URL_LENGTH {
return Err(RealtimeUrlRequestValidationError::RealtimeUrlTooLong);
}
Ok(Self { realtime_url })
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum RealtimeUrlRequestValidationError {
RealtimeUrlTooLong,
}
impl std::fmt::Display for RealtimeUrlRequestValidationError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
RealtimeUrlRequestValidationError::RealtimeUrlTooLong => write!(
f,
"Realtime URL exceeds maximum length of {} characters",
MAXIMUM_REALTIME_URL_LENGTH
),
}
}
}
impl std::error::Error for RealtimeUrlRequestValidationError {}