near_jsonrpc_primitives/types/
config.rs

1use serde_json::Value;
2
3#[derive(serde::Serialize, serde::Deserialize, Debug)]
4#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
5pub struct RpcProtocolConfigRequest {
6    #[serde(flatten)]
7    pub block_reference: near_primitives::types::BlockReference,
8}
9
10#[derive(serde::Serialize, serde::Deserialize, Debug)]
11#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
12pub struct RpcProtocolConfigResponse {
13    #[serde(flatten)]
14    pub config_view: near_chain_configs::ProtocolConfigView,
15}
16
17#[derive(thiserror::Error, Debug, Clone, serde::Serialize, serde::Deserialize)]
18#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
19#[serde(tag = "name", content = "info", rename_all = "SCREAMING_SNAKE_CASE")]
20pub enum RpcProtocolConfigError {
21    #[error("Block has never been observed: {error_message}")]
22    UnknownBlock {
23        #[serde(skip_serializing)]
24        error_message: String,
25    },
26    #[error("The node reached its limits. Try again later. More details: {error_message}")]
27    InternalError { error_message: String },
28}
29
30impl From<RpcProtocolConfigError> for crate::errors::RpcError {
31    fn from(error: RpcProtocolConfigError) -> Self {
32        let error_data = match &error {
33            RpcProtocolConfigError::UnknownBlock { error_message } => {
34                Some(Value::String(format!("Block Not Found: {}", error_message)))
35            }
36            RpcProtocolConfigError::InternalError { .. } => Some(Value::String(error.to_string())),
37        };
38
39        let error_data_value = match serde_json::to_value(error) {
40            Ok(value) => value,
41            Err(err) => {
42                return Self::new_internal_error(
43                    None,
44                    format!("Failed to serialize RpcProtocolConfigError: {:?}", err),
45                );
46            }
47        };
48
49        Self::new_internal_or_handler_error(error_data, error_data_value)
50    }
51}