use super::{GenericError, Params, RequestPayload, SubscriptionData, ValidationError};
use crate::jwt::decode::Topic;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct FetchMessages {
pub topic: Topic,
}
impl RequestPayload for FetchMessages {
type Error = GenericError;
type Response = FetchResponse;
fn validate(&self) -> Result<(), ValidationError> {
self.topic.decode().map_err(ValidationError::TopicDecoding)?;
Ok(())
}
fn into_params(self) -> Params {
Params::FetchMessages(self)
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FetchResponse {
pub messages: Vec<SubscriptionData>,
pub has_more: bool,
}