#![warn(missing_docs)] //! # golgi //! //! _The Golgi complex (aka. Golgi apparatus or Golgi body) packages proteins //! into membrane-bound vesicles inside the cell before the vesicles are sent //! to their destination._ //! //! ----- //! //! ## Introduction //! //! Golgi is an asynchronous, experimental Scuttlebutt client that aims to //! facilitate Scuttlebutt application development. It provides a high-level //! API for interacting with an sbot instance and uses the //! [kuska-ssb](https://github.com/Kuska-ssb) libraries to make RPC calls. //! Development efforts are currently oriented towards //! [go-sbot](https://github.com/cryptoscope/ssb) interoperability. //! //! ## Features //! //! Golgi offers the ability to invoke individual RPC methods while also //! providing a number of convenience methods which may involve multiple RPC //! calls and / or the processing of data received from those calls. The //! [`Sbot`](crate::sbot::Sbot) `struct` is the primary means of interacting //! with the library. //! //! Features include the ability to publish messages of various kinds; to //! retrieve messages (e.g. `about` and `description` messages) and formulate //! queries; to follow, unfollow, block and unblock a peer; to query the social //! graph; and to generate pub invite codes. //! //! Visit the [API modules](crate::api) to view the available methods. //! //! ## Example Usage //! //! Basic usage is demonstrated below. Visit the [examples directory](https://git.coopcloud.tech/golgi-ssb/golgi/src/branch/main/examples) in the `golgi` repository for //! more comprehensive examples. //! //! ```rust //! use golgi::{messages::SsbMessageContent, GolgiError, Sbot, sbot::Keystore}; //! //! pub async fn run() -> Result<(), GolgiError> { //! // Attempt to connect to an sbot instance using the default IP address, //! // port and network key (aka. capabilities key). //! let mut sbot_client = Sbot::init(Keystore::Patchwork, None, None).await?; //! //! // Call the `whoami` RPC method to retrieve the public key for the sbot //! // identity. //! let id = sbot_client.whoami().await?; //! //! // Print the public key (identity) to `stdout`. //! println!("{}", id); //! //! // Compose an SSB post message type. //! let post = SsbMessageContent::Post { //! text: "Biology, eh?!".to_string(), //! mentions: None, //! }; //! //! // Publish the post. //! let post_msg_reference = sbot_client.publish(post).await?; //! //! // Print the reference (sigil-link) for the published post. //! println!("{}", post_msg_reference); //! //! Ok(()) //! } //! ``` pub mod api; pub mod blobs; pub mod error; pub mod messages; pub mod sbot; pub mod utils; pub use crate::{error::GolgiError, sbot::Sbot};