implemented notifications and messages
This commit is contained in:
parent
28a3812812
commit
695ac6daa2
12 changed files with 1023 additions and 315 deletions
|
@ -13,13 +13,45 @@ pub struct ChannelCreate {
|
|||
|
||||
#[derive(Debug)]
|
||||
pub struct ChannelDelete {
|
||||
pub channel_id: u64,
|
||||
pub id: u64,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ChannelGetName {
|
||||
pub id: u64,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ChannelSetName {
|
||||
pub id: u64,
|
||||
pub name: String,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct MessageList {
|
||||
pub channel_id: u64,
|
||||
}
|
||||
#[derive(Debug)]
|
||||
pub struct MessageCreate {
|
||||
pub channel_id: u64,
|
||||
pub content: String,
|
||||
}
|
||||
#[derive(Debug)]
|
||||
pub struct MessageDelete {
|
||||
pub channel_id: u64,
|
||||
pub id: u64,
|
||||
}
|
||||
#[derive(Debug)]
|
||||
pub struct MessageGetContent {
|
||||
pub channel_id: u64,
|
||||
pub id: u64,
|
||||
}
|
||||
#[derive(Debug)]
|
||||
pub struct MessageSetContent {
|
||||
pub channel_id: u64,
|
||||
pub id: u64,
|
||||
pub content: String,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum ClientRequest {
|
||||
|
@ -28,6 +60,12 @@ pub enum ClientRequest {
|
|||
ChannelCreate(ChannelCreate),
|
||||
ChannelDelete(ChannelDelete),
|
||||
ChannelGetName(ChannelGetName),
|
||||
ChannelSetName(ChannelSetName),
|
||||
MessageList(MessageList),
|
||||
MessageCreate(MessageCreate),
|
||||
MessageDelete(MessageDelete),
|
||||
MessageGetContent(MessageGetContent),
|
||||
MessageSetContent(MessageSetContent),
|
||||
}
|
||||
|
||||
impl ClientRequest {
|
||||
|
@ -44,11 +82,41 @@ impl ClientRequest {
|
|||
}
|
||||
|
||||
pub fn new_channel_delete(channel_id: u64) -> Self {
|
||||
Self::ChannelDelete(ChannelDelete { channel_id })
|
||||
Self::ChannelDelete(ChannelDelete { id: channel_id })
|
||||
}
|
||||
|
||||
pub fn new_channel_get_name(channel_id: u64) -> Self {
|
||||
Self::ChannelGetName(ChannelGetName { channel_id })
|
||||
Self::ChannelGetName(ChannelGetName { id: channel_id })
|
||||
}
|
||||
|
||||
pub fn new_channel_set_name(channel_id: u64, name: String) -> Self {
|
||||
Self::ChannelSetName(ChannelSetName {
|
||||
id: channel_id,
|
||||
name,
|
||||
})
|
||||
}
|
||||
|
||||
pub fn new_message_list(channel_id: u64) -> Self {
|
||||
Self::MessageList(MessageList { channel_id })
|
||||
}
|
||||
pub fn new_message_create(channel_id: u64, content: String) -> Self {
|
||||
Self::MessageCreate(MessageCreate {
|
||||
channel_id,
|
||||
content,
|
||||
})
|
||||
}
|
||||
pub fn new_message_delete(channel_id: u64, id: u64) -> Self {
|
||||
Self::MessageDelete(MessageDelete { channel_id, id })
|
||||
}
|
||||
pub fn new_message_get_content(channel_id: u64, id: u64) -> Self {
|
||||
Self::MessageGetContent(MessageGetContent { channel_id, id })
|
||||
}
|
||||
pub fn new_message_set_content(channel_id: u64, id: u64, content: String) -> Self {
|
||||
Self::MessageSetContent(MessageSetContent {
|
||||
channel_id,
|
||||
id,
|
||||
content,
|
||||
})
|
||||
}
|
||||
|
||||
pub fn try_parse(line: &str) -> Option<Self> {
|
||||
|
@ -58,8 +126,42 @@ impl ClientRequest {
|
|||
ping { content } => Self::Ping(Ping { content }),
|
||||
channel_list {} => Self::ChannelList(ChannelList {}),
|
||||
channel_create { name } => Self::ChannelCreate(ChannelCreate { name }),
|
||||
channel_delete { channel_id } => Self::ChannelDelete(ChannelDelete { channel_id }),
|
||||
channel_get_name { channel_id } => Self::ChannelGetName(ChannelGetName { channel_id }),
|
||||
channel_delete { id: channel_id } => {
|
||||
Self::ChannelDelete(ChannelDelete { id: channel_id })
|
||||
}
|
||||
channel_get_name { id: channel_id } => {
|
||||
Self::ChannelGetName(ChannelGetName { id: channel_id })
|
||||
}
|
||||
channel_set_name {
|
||||
id: channel_id,
|
||||
name,
|
||||
} => Self::ChannelSetName(ChannelSetName {
|
||||
id: channel_id,
|
||||
name,
|
||||
}),
|
||||
message_list { channel_id } => Self::MessageList(MessageList { channel_id }),
|
||||
message_create {
|
||||
channel_id,
|
||||
content,
|
||||
} => Self::MessageCreate(MessageCreate {
|
||||
channel_id,
|
||||
content,
|
||||
}),
|
||||
message_delete { id, channel_id } => {
|
||||
Self::MessageDelete(MessageDelete { id, channel_id })
|
||||
}
|
||||
message_get_content { id, channel_id } => {
|
||||
Self::MessageGetContent(MessageGetContent { id, channel_id })
|
||||
}
|
||||
message_set_content {
|
||||
id,
|
||||
channel_id,
|
||||
content,
|
||||
} => Self::MessageSetContent(MessageSetContent {
|
||||
content,
|
||||
id,
|
||||
channel_id,
|
||||
}),
|
||||
};
|
||||
Some(mapped)
|
||||
}
|
||||
|
@ -70,8 +172,42 @@ impl ClientRequest {
|
|||
Self::Ping(Ping { content }) => ping { content },
|
||||
Self::ChannelList(ChannelList {}) => repr::Command::channel_list {},
|
||||
Self::ChannelCreate(ChannelCreate { name }) => channel_create { name },
|
||||
Self::ChannelDelete(ChannelDelete { channel_id }) => channel_delete { channel_id },
|
||||
Self::ChannelGetName(ChannelGetName { channel_id }) => channel_get_name { channel_id },
|
||||
Self::ChannelDelete(ChannelDelete { id: channel_id }) => {
|
||||
channel_delete { id: channel_id }
|
||||
}
|
||||
Self::ChannelGetName(ChannelGetName { id: channel_id }) => {
|
||||
channel_get_name { id: channel_id }
|
||||
}
|
||||
Self::ChannelSetName(ChannelSetName {
|
||||
id: channel_id,
|
||||
name,
|
||||
}) => channel_set_name {
|
||||
id: channel_id,
|
||||
name,
|
||||
},
|
||||
Self::MessageList(MessageList { channel_id }) => message_list { channel_id },
|
||||
Self::MessageCreate(MessageCreate {
|
||||
channel_id,
|
||||
content,
|
||||
}) => message_create {
|
||||
channel_id,
|
||||
content,
|
||||
},
|
||||
Self::MessageDelete(MessageDelete { id, channel_id }) => {
|
||||
message_delete { id, channel_id }
|
||||
}
|
||||
Self::MessageGetContent(MessageGetContent { id, channel_id }) => {
|
||||
message_get_content { id, channel_id }
|
||||
}
|
||||
Self::MessageSetContent(MessageSetContent {
|
||||
content,
|
||||
id,
|
||||
channel_id,
|
||||
}) => message_set_content {
|
||||
id,
|
||||
channel_id,
|
||||
content,
|
||||
},
|
||||
};
|
||||
serde_json::to_string(&mapped).unwrap()
|
||||
}
|
||||
|
@ -85,10 +221,42 @@ mod repr {
|
|||
#[derive(Serialize, Deserialize)]
|
||||
#[serde(tag = "type")]
|
||||
pub enum Command {
|
||||
ping { content: String },
|
||||
ping {
|
||||
content: String,
|
||||
},
|
||||
channel_list {},
|
||||
channel_create { name: String },
|
||||
channel_delete { channel_id: u64 },
|
||||
channel_get_name { channel_id: u64 },
|
||||
channel_create {
|
||||
name: String,
|
||||
},
|
||||
channel_delete {
|
||||
id: u64,
|
||||
},
|
||||
channel_get_name {
|
||||
id: u64,
|
||||
},
|
||||
channel_set_name {
|
||||
id: u64,
|
||||
name: String,
|
||||
},
|
||||
message_list {
|
||||
channel_id: u64,
|
||||
},
|
||||
message_create {
|
||||
channel_id: u64,
|
||||
content: String,
|
||||
},
|
||||
message_delete {
|
||||
channel_id: u64,
|
||||
id: u64,
|
||||
},
|
||||
message_get_content {
|
||||
channel_id: u64,
|
||||
id: u64,
|
||||
},
|
||||
message_set_content {
|
||||
channel_id: u64,
|
||||
id: u64,
|
||||
content: String,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,19 +1,78 @@
|
|||
#[derive(Debug)]
|
||||
pub struct Pong {
|
||||
pub content: String,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ChannelList {
|
||||
pub channels: Vec<u64>,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ChannelGetName {
|
||||
pub id: u64,
|
||||
pub name: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ChannelCreate {
|
||||
pub id: u64,
|
||||
pub name: String,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ChannelDelete {
|
||||
pub id: u64,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct ChannelSetName {
|
||||
pub id: u64,
|
||||
pub name: String,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct MessageList {
|
||||
pub channel_id: u64,
|
||||
pub messages: Vec<u64>,
|
||||
}
|
||||
#[derive(Debug)]
|
||||
pub struct MessageCreate {
|
||||
pub channel_id: u64,
|
||||
pub id: u64,
|
||||
pub content: String,
|
||||
}
|
||||
#[derive(Debug)]
|
||||
pub struct MessageDelete {
|
||||
pub channel_id: u64,
|
||||
pub id: u64,
|
||||
}
|
||||
#[derive(Debug)]
|
||||
pub struct MessageGetContent {
|
||||
pub channel_id: u64,
|
||||
pub id: u64,
|
||||
pub content: Option<String>,
|
||||
}
|
||||
#[derive(Debug)]
|
||||
pub struct MessageSetContent {
|
||||
pub channel_id: u64,
|
||||
pub id: u64,
|
||||
pub content: String,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum ServerRequest {
|
||||
Pong(Pong),
|
||||
ChannelCreate(ChannelCreate),
|
||||
ChannelDelete(ChannelDelete),
|
||||
ChannelList(ChannelList),
|
||||
ChannelGetName(ChannelGetName),
|
||||
ChannelSetName(ChannelSetName),
|
||||
MessageList(MessageList),
|
||||
MessageCreate(MessageCreate),
|
||||
MessageDelete(MessageDelete),
|
||||
MessageGetContent(MessageGetContent),
|
||||
MessageSetContent(MessageSetContent),
|
||||
}
|
||||
|
||||
impl ServerRequest {
|
||||
|
@ -29,6 +88,52 @@ impl ServerRequest {
|
|||
Self::ChannelGetName(ChannelGetName { name, id })
|
||||
}
|
||||
|
||||
pub fn new_channel_create(id: u64, name: String) -> Self {
|
||||
Self::ChannelCreate(ChannelCreate { id, name })
|
||||
}
|
||||
|
||||
pub fn new_channel_delete(id: u64) -> Self {
|
||||
Self::ChannelDelete(ChannelDelete { id })
|
||||
}
|
||||
|
||||
pub fn new_channel_set_name(id: u64, name: String) -> Self {
|
||||
Self::ChannelSetName(ChannelSetName { id, name })
|
||||
}
|
||||
|
||||
pub fn new_message_list(channel_id: u64, messages: Vec<u64>) -> Self {
|
||||
Self::MessageList(MessageList {
|
||||
channel_id,
|
||||
messages,
|
||||
})
|
||||
}
|
||||
|
||||
pub fn new_message_create(channel_id: u64, id: u64, content: String) -> Self {
|
||||
Self::MessageCreate(MessageCreate {
|
||||
channel_id,
|
||||
content,
|
||||
id,
|
||||
})
|
||||
}
|
||||
pub fn new_message_delete(channel_id: u64, id: u64) -> Self {
|
||||
Self::MessageDelete(MessageDelete { channel_id, id })
|
||||
}
|
||||
|
||||
pub fn new_message_get_content(channel_id: u64, id: u64, content: Option<String>) -> Self {
|
||||
Self::MessageGetContent(MessageGetContent {
|
||||
channel_id,
|
||||
content,
|
||||
id,
|
||||
})
|
||||
}
|
||||
|
||||
pub fn new_message_set_content(channel_id: u64, id: u64, content: String) -> Self {
|
||||
Self::MessageSetContent(MessageSetContent {
|
||||
channel_id,
|
||||
content,
|
||||
id,
|
||||
})
|
||||
}
|
||||
|
||||
pub fn try_parse(line: &str) -> Option<Self> {
|
||||
use repr::Command::*;
|
||||
let command: repr::Command = serde_json::from_str(line).ok()?;
|
||||
|
@ -36,6 +141,46 @@ impl ServerRequest {
|
|||
pong { content } => Self::Pong(Pong { content }),
|
||||
channel_list { channels } => Self::ChannelList(ChannelList { channels }),
|
||||
channel_get_name { id, name } => Self::ChannelGetName(ChannelGetName { id, name }),
|
||||
channel_create { id, name } => Self::ChannelCreate(ChannelCreate { id, name }),
|
||||
channel_set_name { id, name } => Self::ChannelSetName(ChannelSetName { id, name }),
|
||||
channel_delete { id } => Self::ChannelDelete(ChannelDelete { id }),
|
||||
message_list {
|
||||
channel_id,
|
||||
messages,
|
||||
} => Self::MessageList(MessageList {
|
||||
channel_id,
|
||||
messages,
|
||||
}),
|
||||
message_create {
|
||||
channel_id,
|
||||
id,
|
||||
content,
|
||||
} => Self::MessageCreate(MessageCreate {
|
||||
channel_id,
|
||||
content,
|
||||
id,
|
||||
}),
|
||||
message_delete { channel_id, id } => {
|
||||
Self::MessageDelete(MessageDelete { channel_id, id })
|
||||
}
|
||||
message_get_content {
|
||||
channel_id,
|
||||
id,
|
||||
content,
|
||||
} => Self::MessageGetContent(MessageGetContent {
|
||||
channel_id,
|
||||
content,
|
||||
id,
|
||||
}),
|
||||
message_set_content {
|
||||
channel_id,
|
||||
id,
|
||||
content,
|
||||
} => Self::MessageSetContent(MessageSetContent {
|
||||
channel_id,
|
||||
content,
|
||||
id,
|
||||
}),
|
||||
};
|
||||
Some(mapped)
|
||||
}
|
||||
|
@ -46,6 +191,47 @@ impl ServerRequest {
|
|||
Self::Pong(Pong { content }) => pong { content },
|
||||
Self::ChannelList(ChannelList { channels }) => channel_list { channels },
|
||||
Self::ChannelGetName(ChannelGetName { id, name }) => channel_get_name { id, name },
|
||||
Self::ChannelCreate(ChannelCreate { id, name }) => channel_create { id, name },
|
||||
Self::ChannelSetName(ChannelSetName { id, name }) => channel_set_name { id, name },
|
||||
Self::ChannelDelete(ChannelDelete { id }) => channel_delete { id },
|
||||
|
||||
Self::MessageList(MessageList {
|
||||
channel_id,
|
||||
messages,
|
||||
}) => message_list {
|
||||
channel_id,
|
||||
messages,
|
||||
},
|
||||
Self::MessageCreate(MessageCreate {
|
||||
channel_id,
|
||||
content,
|
||||
id,
|
||||
}) => message_create {
|
||||
channel_id,
|
||||
id,
|
||||
content,
|
||||
},
|
||||
Self::MessageDelete(MessageDelete { channel_id, id }) => {
|
||||
message_delete { channel_id, id }
|
||||
}
|
||||
Self::MessageGetContent(MessageGetContent {
|
||||
channel_id,
|
||||
content,
|
||||
id,
|
||||
}) => message_get_content {
|
||||
channel_id,
|
||||
id,
|
||||
content,
|
||||
},
|
||||
Self::MessageSetContent(MessageSetContent {
|
||||
channel_id,
|
||||
content,
|
||||
id,
|
||||
}) => message_set_content {
|
||||
channel_id,
|
||||
id,
|
||||
content,
|
||||
},
|
||||
};
|
||||
serde_json::to_string(&mapped).unwrap()
|
||||
}
|
||||
|
@ -59,8 +245,49 @@ mod repr {
|
|||
#[derive(Serialize, Deserialize)]
|
||||
#[serde(tag = "type")]
|
||||
pub enum Command {
|
||||
pong { content: String },
|
||||
channel_list { channels: Vec<u64> },
|
||||
channel_get_name { id: u64, name: Option<String> },
|
||||
pong {
|
||||
content: String,
|
||||
},
|
||||
channel_list {
|
||||
channels: Vec<u64>,
|
||||
},
|
||||
channel_get_name {
|
||||
id: u64,
|
||||
name: Option<String>,
|
||||
},
|
||||
channel_create {
|
||||
id: u64,
|
||||
name: String,
|
||||
},
|
||||
channel_delete {
|
||||
id: u64,
|
||||
},
|
||||
channel_set_name {
|
||||
id: u64,
|
||||
name: String,
|
||||
},
|
||||
message_list {
|
||||
channel_id: u64,
|
||||
messages: Vec<u64>,
|
||||
},
|
||||
message_create {
|
||||
channel_id: u64,
|
||||
id: u64,
|
||||
content: String,
|
||||
},
|
||||
message_delete {
|
||||
channel_id: u64,
|
||||
id: u64,
|
||||
},
|
||||
message_get_content {
|
||||
channel_id: u64,
|
||||
id: u64,
|
||||
content: Option<String>,
|
||||
},
|
||||
message_set_content {
|
||||
channel_id: u64,
|
||||
id: u64,
|
||||
content: String,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue