#![doc = include_str!("../README.md")] use std::env; use golgi::{sbot::Keystore, Sbot}; use rocket::{get, launch, routes}; /// Initialise a connection to a Scuttlebutt server. async fn init_sbot() -> Result { let go_sbot_port = env::var("GO_SBOT_PORT").unwrap_or_else(|_| "8021".to_string()); let keystore = Keystore::GoSbot; let ip_port = Some(format!("127.0.0.1:{}", go_sbot_port)); let net_id = None; Sbot::init(keystore, ip_port, net_id) .await .map_err(|e| e.to_string()) } /// Return the public key of the local sbot instance. async fn whoami() -> Result { let mut sbot = init_sbot().await?; sbot.whoami().await.map_err(|e| e.to_string()) } #[get("/")] async fn home() -> String { match whoami().await { Ok(id) => id, Err(e) => format!("whoami call failed: {}", e), } } #[launch] async fn rocket() -> _ { rocket::build().mount("/", routes![home]) }