2 releases
0.1.1 | Feb 26, 2022 |
---|---|
0.1.0 | Feb 21, 2022 |
#8 in #scuttlebutt
74KB
834 lines
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 libraries to make RPC calls. Development efforts are currently oriented towards go-sbot 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
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.
Example Usage
Basic usage is demonstrated below. Visit the examples directory in the golgi
repository for
more comprehensive examples.
use golgi::{GolgiError, Sbot};
pub async fn run() -> Result<(), GolgiError> {
// Attempt to initialise a connection to an sbot instance using the default
// IP address, port and network key (aka. capabilities key).
let mut sbot_client = Sbot::init(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(())
}
Authors
License
LGPL-3.0.
Dependencies
~26–37MB
~370K SLoC