35 lines
784 B
Rust
35 lines
784 B
Rust
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct ClientMeta {
|
|
pub display_name: String,
|
|
pub avatar: Option<String>,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct ServerMeta {
|
|
pub name: String,
|
|
pub description: String,
|
|
pub channels: Vec<Channel>,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
#[serde(tag = "kind")]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub enum ChannelKind {
|
|
Text,
|
|
Category { channels: Vec<Channel> },
|
|
}
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct Channel {
|
|
pub id: String,
|
|
pub name: String,
|
|
|
|
#[serde(flatten)]
|
|
pub data: ChannelKind,
|
|
}
|