A Scuttlebutt client library written in Rust.
Go to file
glyph b0b2532976 messy implementation used for lykin testing 2022-05-18 09:03:18 +02:00
examples update docs and doc example code to use new keystore selector 2022-05-11 14:14:25 +02:00
git_hooks Add git hook 2022-01-15 08:45:02 -05:00
src messy implementation used for lykin testing 2022-05-18 09:03:18 +02:00
.gitignore initial commit 2021-12-02 15:12:52 +02:00
CHANGELOG.md add changelog and bump version 2022-02-26 14:27:39 +02:00
Cargo.lock update kuska dependency path and fix private msg docs 2022-03-13 10:50:16 +02:00
Cargo.toml update kuska dependency path and fix private msg docs 2022-03-13 10:50:16 +02:00
LICENSE.txt add license 2022-02-15 11:18:52 +02:00
README.md update docs and doc example code to use new keystore selector 2022-05-11 14:14:25 +02:00

README.md

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.

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, sbot::Keystore};

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?;

    // 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.