use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct AnalyticsSinglePostResponse {
#[serde(rename = "postId", skip_serializing_if = "Option::is_none")]
pub post_id: Option<String>,
#[serde(rename = "latePostId", skip_serializing_if = "Option::is_none")]
pub late_post_id: Option<String>,
#[serde(rename = "status", skip_serializing_if = "Option::is_none")]
pub status: Option<Status>,
#[serde(rename = "content", skip_serializing_if = "Option::is_none")]
pub content: Option<String>,
#[serde(rename = "scheduledFor", skip_serializing_if = "Option::is_none")]
pub scheduled_for: Option<String>,
#[serde(rename = "publishedAt", skip_serializing_if = "Option::is_none")]
pub published_at: Option<String>,
#[serde(rename = "analytics", skip_serializing_if = "Option::is_none")]
pub analytics: Option<Box<models::PostAnalytics>>,
#[serde(rename = "platformAnalytics", skip_serializing_if = "Option::is_none")]
pub platform_analytics: Option<Vec<models::PlatformAnalytics>>,
#[serde(rename = "platform", skip_serializing_if = "Option::is_none")]
pub platform: Option<String>,
#[serde(rename = "platformPostUrl", skip_serializing_if = "Option::is_none")]
pub platform_post_url: Option<String>,
#[serde(rename = "isExternal", skip_serializing_if = "Option::is_none")]
pub is_external: Option<bool>,
#[serde(rename = "syncStatus", skip_serializing_if = "Option::is_none")]
pub sync_status: Option<SyncStatus>,
#[serde(rename = "message", skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(rename = "thumbnailUrl", skip_serializing_if = "Option::is_none")]
pub thumbnail_url: Option<String>,
#[serde(rename = "mediaType", skip_serializing_if = "Option::is_none")]
pub media_type: Option<MediaType>,
#[serde(rename = "mediaItems", skip_serializing_if = "Option::is_none")]
pub media_items: Option<Vec<models::AnalyticsSinglePostResponseMediaItemsInner>>,
}
impl AnalyticsSinglePostResponse {
pub fn new() -> AnalyticsSinglePostResponse {
AnalyticsSinglePostResponse {
post_id: None,
late_post_id: None,
status: None,
content: None,
scheduled_for: None,
published_at: None,
analytics: None,
platform_analytics: None,
platform: None,
platform_post_url: None,
is_external: None,
sync_status: None,
message: None,
thumbnail_url: None,
media_type: None,
media_items: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Status {
#[serde(rename = "published")]
Published,
#[serde(rename = "failed")]
Failed,
#[serde(rename = "partial")]
Partial,
}
impl Default for Status {
fn default() -> Status {
Self::Published
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum SyncStatus {
#[serde(rename = "synced")]
Synced,
#[serde(rename = "pending")]
Pending,
#[serde(rename = "partial")]
Partial,
#[serde(rename = "unavailable")]
Unavailable,
}
impl Default for SyncStatus {
fn default() -> SyncStatus {
Self::Synced
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum MediaType {
#[serde(rename = "image")]
Image,
#[serde(rename = "video")]
Video,
#[serde(rename = "carousel")]
Carousel,
#[serde(rename = "text")]
Text,
}
impl Default for MediaType {
fn default() -> MediaType {
Self::Image
}
}