74 lines
2.7 KiB
Rust
74 lines
2.7 KiB
Rust
use crate::{error::GolgiError, messages::SsbMessageContent, sbot::sbot_connection::Sbot, utils};
|
|
|
|
impl Sbot {
|
|
/// Call the `publish` RPC method and return a message reference.
|
|
///
|
|
/// # Arguments
|
|
///
|
|
/// * `msg` - A `SsbMessageContent` `enum` whose variants include `Pub`, `Post`, `Contact`, `About`,
|
|
/// `Channel` and `Vote`. See the `kuska_ssb` documentation for further details such as field
|
|
/// names and accepted values for each variant.
|
|
pub async fn publish(&mut self, msg: SsbMessageContent) -> Result<String, GolgiError> {
|
|
let mut sbot_connection = self.get_sbot_connection().await?;
|
|
let req_id = sbot_connection.client.publish_req_send(msg).await?;
|
|
|
|
utils::get_async(
|
|
&mut sbot_connection.rpc_reader,
|
|
req_id,
|
|
utils::string_res_parse,
|
|
)
|
|
.await
|
|
}
|
|
|
|
/// Wrapper for publish which constructs and publishes a post message appropriately from a string.
|
|
///
|
|
/// # Arguments
|
|
///
|
|
/// * `text` - A reference to a string slice which represents the text to be published in the post
|
|
pub async fn publish_post(&mut self, text: &str) -> Result<String, GolgiError> {
|
|
let msg = SsbMessageContent::Post {
|
|
text: text.to_string(),
|
|
mentions: None,
|
|
};
|
|
self.publish(msg).await
|
|
}
|
|
|
|
/// Wrapper for publish which constructs and publishes an about description message appropriately from a string.
|
|
///
|
|
/// # Arguments
|
|
///
|
|
/// * `description` - A reference to a string slice which represents the text to be published as an about description.
|
|
pub async fn publish_description(&mut self, description: &str) -> Result<String, GolgiError> {
|
|
let msg = SsbMessageContent::About {
|
|
about: self.id.to_string(),
|
|
name: None,
|
|
title: None,
|
|
branch: None,
|
|
image: None,
|
|
description: Some(description.to_string()),
|
|
location: None,
|
|
start_datetime: None,
|
|
};
|
|
self.publish(msg).await
|
|
}
|
|
|
|
/// Wrapper for publish which constructs and publishes an about name message appropriately from a string.
|
|
///
|
|
/// # Arguments
|
|
///
|
|
/// * `name` - A reference to a string slice which represents the text to be published as an about name.
|
|
pub async fn publish_name(&mut self, name: &str) -> Result<String, GolgiError> {
|
|
let msg = SsbMessageContent::About {
|
|
about: self.id.to_string(),
|
|
name: Some(name.to_string()),
|
|
title: None,
|
|
branch: None,
|
|
image: None,
|
|
description: None,
|
|
location: None,
|
|
start_datetime: None,
|
|
};
|
|
self.publish(msg).await
|
|
}
|
|
}
|