add tangles.thread rpc method
This commit is contained in:
parent
195eeb523c
commit
5c4b92a8bf
|
@ -6,6 +6,7 @@ pub mod history_stream;
|
|||
pub mod invite;
|
||||
pub mod private;
|
||||
pub mod publish;
|
||||
pub mod tangles;
|
||||
pub mod whoami;
|
||||
|
||||
pub use crate::sbot::*;
|
||||
|
|
|
@ -0,0 +1,66 @@
|
|||
//! Take a message reference and return a stream of all messages in the thread.
|
||||
//!
|
||||
//! Implements the following methods:
|
||||
//!
|
||||
//! - [`Sbot::tangles_thread`]
|
||||
|
||||
use async_std::stream::Stream;
|
||||
pub use kuska_ssb::api::dto::TanglesThread;
|
||||
|
||||
use crate::{error::GolgiError, messages::SsbMessageKVT, sbot::Sbot, utils};
|
||||
//use crate::{error::GolgiError, messages::SsbMessageValue, sbot::Sbot, utils};
|
||||
|
||||
impl Sbot {
|
||||
// TODO: update this example code
|
||||
|
||||
/// Call the `tanglesThread` RPC method. Returns messages in the form
|
||||
/// of KVTs (Key Value Timestamp).
|
||||
///
|
||||
/// # Example
|
||||
///
|
||||
/// ```rust
|
||||
/// use async_std::stream::StreamExt;
|
||||
/// use golgi::{
|
||||
/// Sbot,
|
||||
/// GolgiError,
|
||||
/// sbot::Keystore
|
||||
/// };
|
||||
///
|
||||
/// async fn tangle() -> Result<(), GolgiError> {
|
||||
/// let mut sbot_client = Sbot::init(Keystore::Patchwork, None, None).await?;
|
||||
///
|
||||
/// let msg_key = "%kmXb3MXtBJaNugcEL/Q7G40DgcAkMNTj3yhmxKHjfCM=.sha256";
|
||||
///
|
||||
/// let args = TanglesThread::new(msg_key).keys_values(true, true);
|
||||
/// let tangles_thread = sbot_client.tangles_thread(msg_id).await?;
|
||||
///
|
||||
/// tangles_thread.for_each(|msg| {
|
||||
/// match msg {
|
||||
/// Ok(kvt) => println!("msg kvt: {:?}", kvt),
|
||||
/// Err(e) => eprintln!("error: {}", e),
|
||||
/// }
|
||||
/// }).await;
|
||||
///
|
||||
/// Ok(())
|
||||
/// }
|
||||
/// ```
|
||||
pub async fn tangles_thread(
|
||||
&mut self,
|
||||
args: TanglesThread,
|
||||
) -> Result<impl Stream<Item = Result<SsbMessageKVT, GolgiError>>, GolgiError> {
|
||||
// ) -> Result<impl Stream<Item = Result<SsbMessageValue, GolgiError>>, GolgiError> {
|
||||
let mut sbot_connection = self.get_sbot_connection().await?;
|
||||
let req_id = sbot_connection
|
||||
.client
|
||||
.tangles_thread_req_send(&args)
|
||||
.await?;
|
||||
|
||||
println!("{}", req_id);
|
||||
|
||||
let thread_stream =
|
||||
utils::get_source_stream(sbot_connection.rpc_reader, req_id, utils::kvt_res_parse)
|
||||
//utils::get_source_stream(sbot_connection.rpc_reader, req_id, utils::ssb_message_res_parse)
|
||||
.await;
|
||||
Ok(thread_stream)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue