use crate::openapi::{
apis::{Result, posts_api as apis},
models::{self, CreatePostRequestMetadata},
};
use typed_builder::TypedBuilder;
use crate::Client;
#[derive(Debug, TypedBuilder)]
#[builder(doc, field_defaults(default, setter(strip_option)))]
pub struct CreatePost {
#[builder(!default, setter(into, !strip_option))]
pub channel_id: String,
#[builder(!default, setter(into, !strip_option))]
pub message: String,
pub root_id: Option<String>,
pub file_ids: Option<Vec<String>>,
pub props: Option<serde_json::Value>,
pub metadata: Option<CreatePostRequestMetadata>,
pub set_online: Option<bool>,
}
impl CreatePost {
pub async fn send(self, client: &Client) -> Result<models::Post, apis::CreatePostError> {
let params = apis::CreatePostParams {
create_post_request: models::CreatePostRequest {
channel_id: self.channel_id,
message: self.message,
root_id: self.root_id,
file_ids: self.file_ids,
props: self.props,
metadata: self.metadata.map(Box::new),
},
set_online: self.set_online,
};
apis::create_post(client.configuration(), params).await
}
}