//! Module containing all info relating to a status. use super::prelude::*; use crate::{entities::card::Card, status_builder::Visibility}; use chrono::prelude::*; use serde::Deserialize; /// A status from the instance. #[derive(Debug, Clone, Deserialize, PartialEq)] pub struct Status { /// The ID of the status. pub id: String, /// A Fediverse-unique resource ID. pub uri: String, /// URL to the status page (can be remote) pub url: Option, /// The Account which posted the status. pub account: Account, /// The ID of the status this status is replying to, if the status is /// a reply. pub in_reply_to_id: Option, /// The ID of the account this status is replying to, if the status is /// a reply. pub in_reply_to_account_id: Option, /// If this status is a reblogged Status of another User. pub reblog: Option>, /// Body of the status; this will contain HTML /// (remote HTML already sanitized) pub content: String, /// The time the status was created. pub created_at: DateTime, /// An array of Emoji pub emojis: Vec, /// The numbef or replies to this status. pub replies_count: Option, /// The number of reblogs for the status. pub reblogs_count: u64, /// The number of favourites for the status. pub favourites_count: u64, /// Whether the application client has reblogged the status. pub reblogged: Option, /// Whether the application client has favourited the status. pub favourited: Option, /// Whether media attachments should be hidden by default. pub sensitive: bool, /// If not empty, warning text that should be displayed before the actual /// content. pub spoiler_text: String, /// The visibilty of the status. pub visibility: Visibility, /// An array of attachments. pub media_attachments: Vec, /// An array of mentions. pub mentions: Vec, /// An array of tags. pub tags: Vec, /// The associated card pub card: Option, /// Name of application used to post status. pub application: Option, /// The detected language for the status, if detected. pub language: Option, /// Whether this is the pinned status for the account that posted it. pub pinned: Option, } /// A mention of another user. #[derive(Debug, Clone, Deserialize, PartialEq)] pub struct Mention { /// URL of user's profile (can be remote). pub url: String, /// The username of the account. pub username: String, /// Equals `username` for local users, includes `@domain` for remote ones. pub acct: String, /// Account ID. pub id: String, } /// Struct representing an emoji within text. #[derive(Clone, Debug, Deserialize, PartialEq)] pub struct Emoji { /// The shortcode of the emoji pub shortcode: String, /// URL to the emoji static image pub static_url: String, /// URL to the emoji image pub url: String, } /// Hashtags in the status. #[derive(Debug, Clone, Deserialize, PartialEq)] pub struct Tag { /// The hashtag, not including the preceding `#`. pub name: String, /// The URL of the hashtag. pub url: String, } /// Application details. #[derive(Debug, Clone, Deserialize, PartialEq)] pub struct Application { /// Name of the application. pub name: String, /// Homepage URL of the application. pub website: Option, }