golgi/README.md

73 lines
2.3 KiB
Markdown
Raw Permalink Normal View History

2021-12-02 13:12:52 +00:00
# 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._
2021-12-02 13:12:52 +00:00
2021-12-02 13:16:19 +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.
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
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
use golgi::{GolgiError, Sbot, sbot::Keystore};
2021-12-02 13:12:52 +00:00
pub async fn run() -> Result<(), GolgiError> {
// 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
// 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?;
// Print the public key (identity) to `stdout`.
2021-12-02 13:12:52 +00:00
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(())
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.