twitter_v2/data/
space.rs

1use crate::id::{NumericId, StringId};
2use serde::{Deserialize, Serialize};
3use time::OffsetDateTime;
4
5#[derive(Debug, Clone, Copy, Serialize, Deserialize, Eq, PartialEq)]
6#[serde(rename_all = "snake_case")]
7pub enum SpaceState {
8    Live,
9    Scheduled,
10    Ended,
11}
12
13#[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq)]
14pub struct SpaceTopic {
15    pub id: StringId,
16    pub name: String,
17    pub description: Option<String>,
18}
19
20#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
21pub struct Space {
22    pub id: StringId,
23    pub state: SpaceState,
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub is_ticketed: Option<bool>,
26    #[serde(skip_serializing_if = "Option::is_none")]
27    pub participant_count: Option<usize>,
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub title: Option<String>,
30    #[serde(skip_serializing_if = "Option::is_none")]
31    pub host_ids: Option<Vec<NumericId>>,
32    #[serde(
33        default,
34        with = "time::serde::rfc3339::option",
35        skip_serializing_if = "Option::is_none"
36    )]
37    pub updated_at: Option<OffsetDateTime>,
38    #[serde(
39        default,
40        with = "time::serde::rfc3339::option",
41        skip_serializing_if = "Option::is_none"
42    )]
43    pub created_at: Option<OffsetDateTime>,
44    #[serde(skip_serializing_if = "Option::is_none")]
45    pub creator_id: Option<NumericId>,
46    #[serde(skip_serializing_if = "Option::is_none")]
47    pub lang: Option<String>,
48    #[serde(skip_serializing_if = "Option::is_none")]
49    pub speaker_ids: Option<Vec<NumericId>>,
50    #[serde(skip_serializing_if = "Option::is_none")]
51    pub invited_user_ids: Option<Vec<NumericId>>,
52    #[serde(
53        default,
54        with = "time::serde::rfc3339::option",
55        skip_serializing_if = "Option::is_none"
56    )]
57    pub scheduled_start: Option<OffsetDateTime>,
58    #[serde(
59        default,
60        with = "time::serde::rfc3339::option",
61        skip_serializing_if = "Option::is_none"
62    )]
63    pub started_at: Option<OffsetDateTime>,
64    #[serde(
65        default,
66        with = "time::serde::rfc3339::option",
67        skip_serializing_if = "Option::is_none"
68    )]
69    pub ended_at: Option<OffsetDateTime>,
70    #[serde(skip_serializing_if = "Option::is_none")]
71    pub topic_ids: Option<Vec<StringId>>,
72    #[serde(skip_serializing_if = "Option::is_none")]
73    pub topics: Option<Vec<SpaceTopic>>,
74    #[serde(skip_serializing_if = "Option::is_none")]
75    pub subscriber_count: Option<usize>,
76}