twitter_v2/data/
poll.rs

1use crate::id::NumericId;
2use serde::{Deserialize, Serialize};
3use time::{Duration, OffsetDateTime};
4
5#[derive(Serialize, Deserialize, Debug, Clone, Eq, PartialEq)]
6pub struct PollOption {
7    pub position: usize,
8    pub label: String,
9    pub votes: usize,
10}
11
12#[derive(Serialize, Deserialize, Debug, Clone, Eq, PartialEq)]
13#[serde(rename_all = "snake_case")]
14pub enum PollVotingStatus {
15    Open,
16    Closed,
17}
18
19#[derive(Serialize, Deserialize, Debug, Clone, Eq, PartialEq)]
20pub struct Poll {
21    pub id: NumericId,
22    pub options: Vec<PollOption>,
23    #[serde(
24        with = "crate::utils::serde::option_duration_mins",
25        rename = "duration_minutes",
26        skip_serializing_if = "Option::is_none",
27        default
28    )]
29    pub duration: Option<Duration>,
30    #[serde(
31        default,
32        with = "time::serde::rfc3339::option",
33        skip_serializing_if = "Option::is_none"
34    )]
35    pub end_datetime: Option<OffsetDateTime>,
36    #[serde(skip_serializing_if = "Option::is_none")]
37    pub voting_status: Option<PollVotingStatus>,
38}