Channelsc
This commit is contained in:
+14
-1
@@ -2,7 +2,7 @@ use std::{collections::HashSet, path::PathBuf};
|
|||||||
|
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::protocol::ServerMeta;
|
use crate::types::{Channel, ChannelKind, ServerMeta};
|
||||||
|
|
||||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
pub struct Config {
|
pub struct Config {
|
||||||
@@ -18,6 +18,19 @@ impl Config {
|
|||||||
meta: ServerMeta {
|
meta: ServerMeta {
|
||||||
name: "New Server".to_string(),
|
name: "New Server".to_string(),
|
||||||
description: String::new(),
|
description: String::new(),
|
||||||
|
|
||||||
|
channels: vec![Channel {
|
||||||
|
id: "text-channels".to_string(),
|
||||||
|
name: "Text Channels".to_string(),
|
||||||
|
|
||||||
|
data: ChannelKind::Category {
|
||||||
|
channels: vec![Channel {
|
||||||
|
id: "general".to_string(),
|
||||||
|
name: "General".to_string(),
|
||||||
|
data: ChannelKind::Text,
|
||||||
|
}],
|
||||||
|
},
|
||||||
|
}],
|
||||||
},
|
},
|
||||||
|
|
||||||
port: 3415,
|
port: 3415,
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ pub mod config;
|
|||||||
pub mod protocol;
|
pub mod protocol;
|
||||||
pub mod server;
|
pub mod server;
|
||||||
pub mod signature;
|
pub mod signature;
|
||||||
|
pub mod types;
|
||||||
|
|
||||||
use std::{
|
use std::{
|
||||||
net::{IpAddr, Ipv4Addr, SocketAddr},
|
net::{IpAddr, Ipv4Addr, SocketAddr},
|
||||||
|
|||||||
+2
-9
@@ -4,17 +4,10 @@ use axum::extract::ws::{Message, Utf8Bytes, WebSocket};
|
|||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use tokio::sync::Mutex;
|
use tokio::sync::Mutex;
|
||||||
|
|
||||||
|
use crate::types::ClientMeta;
|
||||||
|
|
||||||
pub mod initialize;
|
pub mod initialize;
|
||||||
|
|
||||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
||||||
pub struct ClientMeta {}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
||||||
pub struct ServerMeta {
|
|
||||||
pub name: String,
|
|
||||||
pub description: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
#[serde(tag = "method")]
|
#[serde(tag = "method")]
|
||||||
pub enum ClientMethod {
|
pub enum ClientMethod {
|
||||||
|
|||||||
+2
-1
@@ -12,7 +12,8 @@ use tokio::sync::Mutex;
|
|||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
config::Config,
|
config::Config,
|
||||||
protocol::{ClientMeta, ClientMethod, read_loop, send_socket},
|
protocol::{ClientMethod, read_loop, send_socket},
|
||||||
|
types::ClientMeta,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub struct UserConnections {
|
pub struct UserConnections {
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
|
pub struct ClientMeta {}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
|
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,
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user