tx_bakery_ogmios/
error.rs1use anyhow::anyhow;
2use plutus_ledger_api::csl::{csl_to_pla::TryFromCSLError, pla_to_csl::TryFromPLAError};
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5use thiserror::Error;
6use tx_bakery::{chain_query::ChainQueryError, submitter::SubmitterError};
7
8pub type Result<T> = std::result::Result<T, OgmiosError>;
9
10#[derive(Error, Debug)]
11pub enum OgmiosError {
12 #[error(transparent)]
13 TryFromPLAError(#[from] TryFromPLAError),
14
15 #[error(transparent)]
16 TryFromCSLError(#[from] TryFromCSLError),
17
18 #[error("Couldn't convert a {label} from Ogmios response: {source}")]
19 ConversionError {
20 label: String,
21 source: anyhow::Error,
22 },
23
24 #[error(transparent)]
25 RequestError(#[from] reqwest::Error),
26
27 #[error(transparent)]
28 IOError(#[from] std::io::Error),
29
30 #[error("Failed to start Ogmios: {0}")]
31 StartupError(anyhow::Error),
32
33 #[error(transparent)]
34 JSONRpcError(#[from] jsonrpsee::core::client::Error),
35}
36
37impl From<OgmiosError> for ChainQueryError {
38 fn from(err: OgmiosError) -> ChainQueryError {
39 ChainQueryError(anyhow!(err))
40 }
41}
42
43impl From<OgmiosError> for SubmitterError {
44 fn from(err: OgmiosError) -> SubmitterError {
45 SubmitterError(anyhow!(err))
46 }
47}
48
49#[derive(Error, Clone, Debug, Serialize, Deserialize)]
50#[error("JsonRPCError {code}: {message} ({data:?})")]
51pub struct JsonRPCError {
52 pub code: i16,
53 pub message: String,
54 pub data: Option<Value>,
55}