injoint-client 0.0.1

injoint-client is client library for injoint
Documentation
use serde::Serialize;

#[derive(Serialize)]
#[serde(tag = "type", content = "data")]
pub enum JointMessage<T>
where
    T: Serialize + Send + Sync,
{
    Create,
    Join(u64),
    Action(T),
    Leave,
}

#[derive(Serialize)]
pub struct MessageRequest<T>
where
    T: Serialize + Send + Sync,
{
    pub message: JointMessage<T>,
    client_token: String,
}

impl<T> MessageRequest<T>
where
    T: Serialize + Send + Sync,
{
    pub fn new(message: JointMessage<T>) -> Self {
        MessageRequest {
            message,
            client_token: "0".to_string(),
        }
    }

    pub fn create_room() -> Self {
        MessageRequest::new(JointMessage::Create)
    }

    pub fn join_room(room_id: u64) -> Self {
        MessageRequest::new(JointMessage::Join(room_id))
    }

    pub fn leave_room() -> Self {
        MessageRequest::new(JointMessage::Leave)
    }

    pub fn action(action: T) -> Self {
        MessageRequest::new(JointMessage::Action(action))
    }
}