2021-12-02 13:12:52 +00:00
# golgi
2022-02-08 07:22:59 +00:00
_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._
2021-12-02 13:12:52 +00:00
2021-12-02 13:16:19 +00:00
-----
2022-02-08 07:22:59 +00:00
## 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.
## 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
2022-02-16 12:19:00 +00:00
`Sbot` `struct` is the primary means of interacting with the library.
2022-02-08 07:22:59 +00:00
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.
2021-12-02 13:12:52 +00:00
## Example Usage
2022-02-08 07:22:59 +00:00
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.
2021-12-02 13:12:52 +00:00
```rust
2022-05-11 12:14:25 +00:00
use golgi::{GolgiError, Sbot, sbot::Keystore};
2022-02-08 07:22:59 +00:00
2021-12-02 13:12:52 +00:00
pub async fn run() -> Result< (), GolgiError> {
2022-05-11 12:14:25 +00:00
// Attempt to initialise a connection to an sbot instance using the
// secret file at the Patchwork path and the default IP address, port
// and network key (aka. capabilities key).
let mut sbot_client = Sbot::init(Keystore::Patchwork, None, None).await?;
2021-12-02 13:12:52 +00:00
2022-02-08 07:22:59 +00:00
// Call the `whoami` RPC method to retrieve the public key for the sbot
// identity.
2021-12-02 13:12:52 +00:00
let id = sbot_client.whoami().await?;
2022-02-08 07:22:59 +00:00
// Print the public key (identity) to `stdout` .
2021-12-02 13:12:52 +00:00
println!("{}", id);
2022-02-08 07:22:59 +00:00
// 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(())
2021-12-02 13:12:52 +00:00
}
```
2022-02-15 09:18:52 +00:00
2022-02-17 09:31:43 +00:00
## Authors
- [notplants ](https://mfowler.info/ )
- [glyph ](https://mycelial.technology/ )
2022-02-15 09:18:52 +00:00
## License
LGPL-3.0.