From b89acbdd11841c4431130279ed896f49211ace98 Mon Sep 17 00:00:00 2001 From: DylanCa Date: Fri, 29 Dec 2023 02:50:33 +0100 Subject: [PATCH] Added client-related models --- src/models/client/commands.rs | 11 +++++++++++ src/models/client/event.rs | 22 ++++++++++++++++++++++ src/models/client/mod.rs | 3 +++ src/models/client/payload.rs | 22 ++++++++++++++++++++++ 4 files changed, 58 insertions(+) create mode 100644 src/models/client/commands.rs create mode 100644 src/models/client/event.rs create mode 100644 src/models/client/mod.rs create mode 100644 src/models/client/payload.rs diff --git a/src/models/client/commands.rs b/src/models/client/commands.rs new file mode 100644 index 0000000..c3fcc96 --- /dev/null +++ b/src/models/client/commands.rs @@ -0,0 +1,11 @@ +pub enum Commands { + SetActivity +} + +impl Commands { + pub fn as_string(&self) -> String { + match self { + Commands::SetActivity => "SET_ACTIVITY".into(), + } + } +} diff --git a/src/models/client/event.rs b/src/models/client/event.rs new file mode 100644 index 0000000..fb628cb --- /dev/null +++ b/src/models/client/event.rs @@ -0,0 +1,22 @@ +use serde::Serialize; + +use crate::models::activity::Activity; + +#[derive(Serialize, Debug)] +#[serde(untagged)] +pub enum EventData { + Activity(Activity) +} + +pub enum EventName { + Activity +} + + +impl EventName { + pub fn as_string(&self) -> String { + match self { + EventName::Activity => "activity".into(), + } + } +} \ No newline at end of file diff --git a/src/models/client/mod.rs b/src/models/client/mod.rs new file mode 100644 index 0000000..73d0cc6 --- /dev/null +++ b/src/models/client/mod.rs @@ -0,0 +1,3 @@ +pub mod payload; +pub mod event; +pub mod commands; \ No newline at end of file diff --git a/src/models/client/payload.rs b/src/models/client/payload.rs new file mode 100644 index 0000000..db89045 --- /dev/null +++ b/src/models/client/payload.rs @@ -0,0 +1,22 @@ +use serde::Serialize; +use crate::models::client::event::{EventData, EventName}; + +pub enum OpCode { + HANDSHAKE, + MESSAGE, +} + +#[derive(Serialize, Debug)] +pub struct Payload { + pub event_name: String, + pub event_data: EventData, +} + +impl Payload { + pub fn new(event_name: EventName, event_data: EventData) -> Self { + Self { + event_name: event_name.as_string(), + event_data + } + } +} \ No newline at end of file