From 677adf9b5f213f84171da5224639be2b5394d3cb Mon Sep 17 00:00:00 2001 From: DylanCa Date: Fri, 29 Dec 2023 02:50:24 +0100 Subject: [PATCH] Added activity_data activity-related models --- src/models/activity_data/activity_flag.rs | 14 ++++++++++ src/models/activity_data/activity_type.rs | 11 ++++++++ src/models/activity_data/asset.rs | 31 +++++++++++++++++++++++ src/models/activity_data/button.rs | 16 ++++++++++++ src/models/activity_data/emoji.rs | 24 ++++++++++++++++++ src/models/activity_data/mod.rs | 8 ++++++ src/models/activity_data/party.rs | 19 ++++++++++++++ src/models/activity_data/secret.rs | 26 +++++++++++++++++++ src/models/activity_data/timestamp.rs | 20 +++++++++++++++ 9 files changed, 169 insertions(+) create mode 100644 src/models/activity_data/activity_flag.rs create mode 100644 src/models/activity_data/activity_type.rs create mode 100644 src/models/activity_data/asset.rs create mode 100644 src/models/activity_data/button.rs create mode 100644 src/models/activity_data/emoji.rs create mode 100644 src/models/activity_data/mod.rs create mode 100644 src/models/activity_data/party.rs create mode 100644 src/models/activity_data/secret.rs create mode 100644 src/models/activity_data/timestamp.rs diff --git a/src/models/activity_data/activity_flag.rs b/src/models/activity_data/activity_flag.rs new file mode 100644 index 0000000..7a0acc6 --- /dev/null +++ b/src/models/activity_data/activity_flag.rs @@ -0,0 +1,14 @@ +use serde::Serialize; + +#[derive(Serialize, Debug)] +pub enum ActivityFlag { + Instance = 1, + Join = 2, + Spectate = 4, + JoinRequest = 8, + Sync = 16, + Play = 32, + PartyPrivacyFriends = 64, + PartyPrivacyVoiceChannel = 128, + Embedded = 256, +} \ No newline at end of file diff --git a/src/models/activity_data/activity_type.rs b/src/models/activity_data/activity_type.rs new file mode 100644 index 0000000..017fbf0 --- /dev/null +++ b/src/models/activity_data/activity_type.rs @@ -0,0 +1,11 @@ +use serde::Serialize; + +#[derive(Serialize, Debug)] +pub enum ActivityType { + GAME = 0, + STREAMING = 1, + LISTENING = 2, + WATCHING = 3, + CUSTOM = 4, + COMPETING = 5, +} diff --git a/src/models/activity_data/asset.rs b/src/models/activity_data/asset.rs new file mode 100644 index 0000000..9783674 --- /dev/null +++ b/src/models/activity_data/asset.rs @@ -0,0 +1,31 @@ +use serde::Serialize; + +#[derive(Serialize, Debug)] +pub struct Asset { + #[serde(skip_serializing_if = "Option::is_none")] + large_image: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + large_text: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + small_image: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + small_text: Option, +} + +impl Asset { + pub fn new(large_image: Option, + large_text: Option, + small_image: Option, + small_text: Option, + ) -> Asset { + Self { + large_image, + large_text, + small_image, + small_text + } + } +} \ No newline at end of file diff --git a/src/models/activity_data/button.rs b/src/models/activity_data/button.rs new file mode 100644 index 0000000..43ea31a --- /dev/null +++ b/src/models/activity_data/button.rs @@ -0,0 +1,16 @@ +use serde::Serialize; + +#[derive(Serialize, Debug)] +pub struct Button { + label: String, + url: String, +} + +impl Button { + pub fn new(label: String, url: String) -> Button { + Self { + label, + url + } + } +} \ No newline at end of file diff --git a/src/models/activity_data/emoji.rs b/src/models/activity_data/emoji.rs new file mode 100644 index 0000000..9d86e4d --- /dev/null +++ b/src/models/activity_data/emoji.rs @@ -0,0 +1,24 @@ +use serde::Serialize; + +#[derive(Serialize, Debug)] +pub struct Emoji { + name: String, + + #[serde(skip_serializing_if = "Option::is_none")] + id: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + animated: Option +} + +impl Emoji { + pub fn new(name: String, + id: Option, + animated: Option) -> Emoji { + Self { + name, + id, + animated + } + } +} \ No newline at end of file diff --git a/src/models/activity_data/mod.rs b/src/models/activity_data/mod.rs new file mode 100644 index 0000000..af1b4ae --- /dev/null +++ b/src/models/activity_data/mod.rs @@ -0,0 +1,8 @@ +pub mod activity_type; +pub mod timestamp; +pub mod emoji; +pub mod party; +pub mod asset; +pub mod secret; +pub mod activity_flag; +pub mod button; \ No newline at end of file diff --git a/src/models/activity_data/party.rs b/src/models/activity_data/party.rs new file mode 100644 index 0000000..115b05f --- /dev/null +++ b/src/models/activity_data/party.rs @@ -0,0 +1,19 @@ +use serde::Serialize; + +#[derive(Serialize, Debug)] +pub struct Party { + #[serde(skip_serializing_if = "Option::is_none")] + id: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + size: Option<(i8, i8)> +} + +impl Party { + pub fn new(id: Option, size: Option<(i8, i8)>) -> Party { + Self { + id, + size + } + } +} \ No newline at end of file diff --git a/src/models/activity_data/secret.rs b/src/models/activity_data/secret.rs new file mode 100644 index 0000000..7878130 --- /dev/null +++ b/src/models/activity_data/secret.rs @@ -0,0 +1,26 @@ +use serde::Serialize; + +#[derive(Serialize, Debug)] +pub struct Secret { + #[serde(skip_serializing_if = "Option::is_none")] + join: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + spectate: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + instanced_match: Option +} + +impl Secret { + pub fn new(join: Option, + spectate: Option, + instanced_match: Option) -> Secret { + Self { + join, + spectate, + instanced_match + } + } + +} \ No newline at end of file diff --git a/src/models/activity_data/timestamp.rs b/src/models/activity_data/timestamp.rs new file mode 100644 index 0000000..c3dc3c7 --- /dev/null +++ b/src/models/activity_data/timestamp.rs @@ -0,0 +1,20 @@ +use serde::Serialize; + +#[derive(Serialize, Debug)] +pub struct Timestamp { + #[serde(skip_serializing_if = "Option::is_none")] + start: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + end: Option, +} + +impl Timestamp { + pub fn new(start: Option, + end: Option) -> Timestamp { + Self { + start, + end, + } + } +} \ No newline at end of file