Change sbot::init to not panic and instead return an error
This commit is contained in:
parent
f41f8b55d2
commit
e9667a57be
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "golgi"
|
name = "golgi"
|
||||||
version = "0.2.2"
|
version = "0.2.3"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
authors = ["Max Fowler <max@mfowler.info>", "Andrew Reid <glyph@mycelial.technology>"]
|
authors = ["Max Fowler <max@mfowler.info>", "Andrew Reid <glyph@mycelial.technology>"]
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|
|
@ -34,6 +34,8 @@ pub enum GolgiError {
|
||||||
Rpc(RpcError),
|
Rpc(RpcError),
|
||||||
/// Go-sbot error.
|
/// Go-sbot error.
|
||||||
Sbot(String),
|
Sbot(String),
|
||||||
|
/// Error initializing Go-sbot.
|
||||||
|
SbotInit(String),
|
||||||
/// SSB sigil-link error.
|
/// SSB sigil-link error.
|
||||||
SigilLink(String),
|
SigilLink(String),
|
||||||
/// JSON serialization or deserialization error.
|
/// JSON serialization or deserialization error.
|
||||||
|
@ -57,6 +59,7 @@ impl std::error::Error for GolgiError {
|
||||||
GolgiError::Feed(ref err) => Some(err),
|
GolgiError::Feed(ref err) => Some(err),
|
||||||
GolgiError::Rpc(ref err) => Some(err),
|
GolgiError::Rpc(ref err) => Some(err),
|
||||||
GolgiError::Sbot(_) => None,
|
GolgiError::Sbot(_) => None,
|
||||||
|
GolgiError::SbotInit(_) => None,
|
||||||
GolgiError::SigilLink(_) => None,
|
GolgiError::SigilLink(_) => None,
|
||||||
GolgiError::SerdeJson(ref err) => Some(err),
|
GolgiError::SerdeJson(ref err) => Some(err),
|
||||||
GolgiError::ContentType(_) => None,
|
GolgiError::ContentType(_) => None,
|
||||||
|
@ -78,6 +81,9 @@ impl std::fmt::Display for GolgiError {
|
||||||
// then have the core display msg be: "SSB RPC error: {}", context
|
// then have the core display msg be: "SSB RPC error: {}", context
|
||||||
GolgiError::Rpc(ref err) => write!(f, "SSB RPC failure: {}", err),
|
GolgiError::Rpc(ref err) => write!(f, "SSB RPC failure: {}", err),
|
||||||
GolgiError::Sbot(ref err) => write!(f, "Sbot returned an error response: {}", err),
|
GolgiError::Sbot(ref err) => write!(f, "Sbot returned an error response: {}", err),
|
||||||
|
GolgiError::SbotInit(ref err) => {
|
||||||
|
write!(f, "Sbot encountered an initialization error: {}", err)
|
||||||
|
}
|
||||||
GolgiError::SigilLink(ref context) => write!(f, "SSB blob ID error: {}", context),
|
GolgiError::SigilLink(ref context) => write!(f, "SSB blob ID error: {}", context),
|
||||||
GolgiError::SerdeJson(_) => write!(f, "Failed to serialize JSON slice"),
|
GolgiError::SerdeJson(_) => write!(f, "Failed to serialize JSON slice"),
|
||||||
//GolgiError::WhoAmI(ref err) => write!(f, "{}", err),
|
//GolgiError::WhoAmI(ref err) => write!(f, "{}", err),
|
||||||
|
|
34
src/sbot.rs
34
src/sbot.rs
|
@ -75,25 +75,35 @@ impl Sbot {
|
||||||
};
|
};
|
||||||
|
|
||||||
let OwnedIdentity { pk, sk, id } = match keystore {
|
let OwnedIdentity { pk, sk, id } = match keystore {
|
||||||
Keystore::Patchwork => keystore::from_patchwork_local()
|
Keystore::Patchwork => keystore::from_patchwork_local().await.map_err(|_err| {
|
||||||
.await
|
GolgiError::SbotInit(
|
||||||
.expect("couldn't read local patchwork secret from default location"),
|
"couldn't read local patchwork secret from default location".to_string(),
|
||||||
Keystore::GoSbot => keystore::from_gosbot_local()
|
)
|
||||||
.await
|
})?,
|
||||||
.expect("couldn't read local go-sbot secret from default location"),
|
Keystore::GoSbot => keystore::from_gosbot_local().await.map_err(|_err| {
|
||||||
|
GolgiError::SbotInit(
|
||||||
|
"couldn't read local go-sbot secret from default location".to_string(),
|
||||||
|
)
|
||||||
|
})?,
|
||||||
Keystore::CustomGoSbot(key_path) => {
|
Keystore::CustomGoSbot(key_path) => {
|
||||||
keystore::from_custom_gosbot_keypath(key_path.to_string())
|
keystore::from_custom_gosbot_keypath(key_path.to_string())
|
||||||
.await
|
.await
|
||||||
.unwrap_or_else(|_| {
|
.map_err(|_err| {
|
||||||
panic!("couldn't read local go-sbot secret from: {}", key_path)
|
GolgiError::SbotInit(format!(
|
||||||
})
|
"couldn't read local go-sbot secret from: {}",
|
||||||
|
key_path
|
||||||
|
))
|
||||||
|
})?
|
||||||
}
|
}
|
||||||
Keystore::CustomPatchwork(key_path) => {
|
Keystore::CustomPatchwork(key_path) => {
|
||||||
keystore::from_custom_patchwork_keypath(key_path.to_string())
|
keystore::from_custom_patchwork_keypath(key_path.to_string())
|
||||||
.await
|
.await
|
||||||
.unwrap_or_else(|_| {
|
.map_err(|_err| {
|
||||||
panic!("couldn't read local patchwork secret from: {}", key_path)
|
GolgiError::SbotInit(format!(
|
||||||
})
|
"couldn't read local patchwork secret from: {}",
|
||||||
|
key_path
|
||||||
|
))
|
||||||
|
})?
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue