Skip to main content

casper_rust_wasm_sdk/sdk/
mod.rs

1#[cfg(feature = "binary-port")]
2pub mod binary_port;
3
4#[cfg(feature = "deploy")]
5#[allow(hidden_glob_reexports)]
6pub(crate) mod deploy;
7#[cfg(feature = "deploy")]
8pub use deploy::*;
9
10pub mod rpcs;
11
12#[cfg(feature = "transaction")]
13#[allow(hidden_glob_reexports)]
14pub(crate) mod transaction;
15#[cfg(feature = "transaction")]
16pub use transaction::*;
17
18#[cfg(feature = "deploy")]
19pub(crate) mod deploy_utils;
20#[cfg(feature = "deploy")]
21pub(crate) use deploy_utils::*;
22
23#[cfg(feature = "transaction")]
24pub(crate) mod transaction_utils;
25#[cfg(feature = "transaction")]
26pub(crate) use transaction_utils::*;
27
28/// On-disk `sse/` tree: framing + watcher always; client/CES only with `SSE`.
29#[cfg(feature = "watcher")]
30#[path = "sse/mod.rs"]
31pub(crate) mod sse;
32
33#[cfg(feature = "watcher")]
34pub mod watcher {
35    pub use crate::sdk::sse::watcher::*;
36}
37
38/// Full node SSE client + CES (feature `SSE`; pulls in `watcher`).
39#[cfg(feature = "SSE")]
40#[allow(non_snake_case)]
41pub mod SSE {
42    pub use crate::sdk::sse::ces::*;
43    pub use crate::sdk::sse::client::*;
44    pub use crate::sdk::sse::event::*;
45    pub use crate::sdk::sse::framing::*;
46}
47
48#[cfg(feature = "contract")]
49pub(crate) mod contract;
50#[cfg(feature = "contract")]
51pub use contract::*;
52
53#[cfg(feature = "js")]
54use wasm_bindgen::prelude::*;
55
56use crate::types::verbosity::Verbosity;
57
58#[cfg_attr(feature = "js", wasm_bindgen)]
59pub struct SDK {
60    rpc_address: Option<String>,
61    node_address: Option<String>,
62    verbosity: Option<Verbosity>,
63}
64
65impl Default for SDK {
66    fn default() -> Self {
67        Self::new(None, None, None)
68    }
69}
70
71#[cfg_attr(feature = "js", wasm_bindgen)]
72impl SDK {
73    #[cfg_attr(feature = "js", wasm_bindgen(constructor))]
74    pub fn new(
75        rpc_address: Option<String>,
76        node_address: Option<String>,
77        verbosity: Option<Verbosity>,
78    ) -> Self {
79        SDK {
80            rpc_address,
81            node_address,
82            verbosity,
83        }
84    }
85
86    #[cfg_attr(feature = "js", wasm_bindgen(js_name = "getRPCAddress"))]
87    pub fn get_rpc_address(&self, rpc_address: Option<String>) -> String {
88        rpc_address
89            .as_ref()
90            .cloned()
91            .or_else(|| self.rpc_address.as_ref().map(String::to_owned))
92            .unwrap_or_default()
93    }
94
95    #[cfg_attr(feature = "js", wasm_bindgen(js_name = "setRPCAddress"))]
96    pub fn set_rpc_address(&mut self, rpc_address: Option<String>) -> Result<(), String> {
97        self.rpc_address = rpc_address;
98        Ok(())
99    }
100
101    #[cfg_attr(feature = "js", wasm_bindgen(js_name = "getNodeAddress"))]
102    pub fn get_node_address(&self, node_address: Option<String>) -> String {
103        node_address
104            .as_ref()
105            .cloned()
106            .or_else(|| self.node_address.as_ref().map(String::to_owned))
107            .unwrap_or_default()
108    }
109
110    #[cfg_attr(feature = "js", wasm_bindgen(js_name = "setNodeAddress"))]
111    pub fn set_node_address(&mut self, node_address: Option<String>) -> Result<(), String> {
112        self.node_address = node_address;
113        Ok(())
114    }
115
116    #[cfg_attr(feature = "js", wasm_bindgen(js_name = "getVerbosity"))]
117    pub fn get_verbosity(&self, verbosity: Option<Verbosity>) -> Verbosity {
118        verbosity.unwrap_or(self.verbosity.unwrap_or(Verbosity::Low))
119    }
120
121    #[cfg_attr(feature = "js", wasm_bindgen(js_name = "setVerbosity"))]
122    pub fn set_verbosity(&mut self, verbosity: Option<Verbosity>) -> Result<(), String> {
123        self.verbosity = verbosity;
124        Ok(())
125    }
126}