diff --git a/entities/src/filter.rs b/entities/src/filter.rs index 751e45c..e844b42 100644 --- a/entities/src/filter.rs +++ b/entities/src/filter.rs @@ -176,8 +176,10 @@ mod v1 { #[cfg(test)] mod tests { + #[cfg(feature = "json")] use super::*; + #[cfg(feature = "json")] #[test] fn test_filter_action_serialize_and_deserialize() { use Action::*; diff --git a/src/status_builder.rs b/src/status_builder/mod.rs similarity index 78% rename from src/status_builder.rs rename to src/status_builder/mod.rs index fb1b2eb..0a7e6f8 100644 --- a/src/status_builder.rs +++ b/src/status_builder/mod.rs @@ -1,7 +1,9 @@ -use isolang::Language; -use serde::Serialize; +mod new_status; -pub use mastodon_async_entities::visibility::Visibility; +use isolang::Language; + +pub use self::new_status::NewStatus; +use mastodon_async_entities::visibility::Visibility; /// A builder pattern struct for constructing a status. /// @@ -219,46 +221,6 @@ impl StatusBuilder { } } -/// Represents a post that can be sent to the POST /api/v1/status endpoint -/// -/// See also [the API documentation](https://docs.joinmastodon.org/methods/statuses/#form-data-parameters) -#[derive(Debug, Default, Clone, Serialize, PartialEq, Eq)] -pub struct NewStatus { - /// The text content of the status. If media_ids is provided, this becomes - /// optional. Attaching a poll is optional while status is provided. - /// - /// Note that this means there is at this time no check provided by this - /// type to ensure that this value is set when it is required by the API, - /// and an APIError should be expected from [`crate::Mastodon::new_status()`] - /// in this case. - #[serde(skip_serializing_if = "Option::is_none")] - pub status: Option, - /// ID of the status being replied to, if status is a reply. - #[serde(skip_serializing_if = "Option::is_none")] - pub in_reply_to_id: Option, - /// Include Attachment IDs to be attached as media. If provided, status - /// becomes optional, and poll cannot be used. - #[serde(skip_serializing_if = "Option::is_none")] - pub media_ids: Option>, - /// Mark status and attached media as sensitive? Defaults to false. - #[serde(skip_serializing_if = "Option::is_none")] - pub sensitive: Option, - #[serde(skip_serializing_if = "Option::is_none")] - /// Text to be shown as a warning or subject before the actual content. - /// Statuses are generally collapsed behind this field. - pub spoiler_text: Option, - /// Sets the visibility of the posted status to public, unlisted, private, direct. - #[serde(skip_serializing_if = "Option::is_none")] - pub visibility: Option, - /// ISO 639 language code for this status. - #[serde(skip_serializing_if = "Option::is_none")] - pub language: Option, - /// Ignored by Mastodon servers, sets the content type for the status. - /// Mastodon "toots" are always `text/plain`, regardless of this value. - #[serde(skip_serializing_if = "Option::is_none")] - pub content_type: Option, -} - #[cfg(test)] mod tests { use super::*; diff --git a/src/status_builder/new_status.rs b/src/status_builder/new_status.rs new file mode 100644 index 0000000..43e5466 --- /dev/null +++ b/src/status_builder/new_status.rs @@ -0,0 +1,43 @@ +use isolang::Language; + +use mastodon_async_entities::visibility::Visibility; + +/// Represents a post that can be sent to the POST /api/v1/status endpoint +/// +/// See also [the API documentation](https://docs.joinmastodon.org/methods/statuses/#form-data-parameters) +#[derive(Debug, Default, Clone, Serialize, PartialEq, Eq)] +pub struct NewStatus { + /// The text content of the status. If media_ids is provided, this becomes + /// optional. Attaching a poll is optional while status is provided. + /// + /// Note that this means there is at this time no check provided by this + /// type to ensure that this value is set when it is required by the API, + /// and an APIError should be expected from [`crate::Mastodon::new_status()`] + /// in this case. + #[serde(skip_serializing_if = "Option::is_none")] + pub status: Option, + /// ID of the status being replied to, if status is a reply. + #[serde(skip_serializing_if = "Option::is_none")] + pub in_reply_to_id: Option, + /// Include Attachment IDs to be attached as media. If provided, status + /// becomes optional, and poll cannot be used. + #[serde(skip_serializing_if = "Option::is_none")] + pub media_ids: Option>, + /// Mark status and attached media as sensitive? Defaults to false. + #[serde(skip_serializing_if = "Option::is_none")] + pub sensitive: Option, + #[serde(skip_serializing_if = "Option::is_none")] + /// Text to be shown as a warning or subject before the actual content. + /// Statuses are generally collapsed behind this field. + pub spoiler_text: Option, + /// Sets the visibility of the posted status to public, unlisted, private, direct. + #[serde(skip_serializing_if = "Option::is_none")] + pub visibility: Option, + /// ISO 639 language code for this status. + #[serde(skip_serializing_if = "Option::is_none")] + pub language: Option, + /// Ignored by Mastodon servers, sets the content type for the status. + /// Mastodon "toots" are always `text/plain`, regardless of this value. + #[serde(skip_serializing_if = "Option::is_none")] + pub content_type: Option, +}