multiversx_sdk/gateway/
gateway_network_status.rs1use crate::data::network_status::{NetworkStatus, NetworkStatusResponse};
2use anyhow::anyhow;
3
4use super::{GatewayRequest, GatewayRequestType, GET_NETWORK_STATUS_ENDPOINT, METACHAIN_SHARD_ID};
5
6pub struct NetworkStatusRequest {
8 shard: u32,
9}
10
11impl NetworkStatusRequest {
12 pub fn new(shard: u32) -> Self {
13 NetworkStatusRequest { shard }
14 }
15}
16
17impl Default for NetworkStatusRequest {
18 fn default() -> Self {
19 Self {
20 shard: METACHAIN_SHARD_ID,
21 }
22 }
23}
24
25impl GatewayRequest for NetworkStatusRequest {
26 type Payload = ();
27 type DecodedJson = NetworkStatusResponse;
28 type Result = NetworkStatus;
29
30 fn request_type(&self) -> GatewayRequestType {
31 GatewayRequestType::Get
32 }
33
34 fn get_endpoint(&self) -> String {
35 format!("{GET_NETWORK_STATUS_ENDPOINT}/{}", self.shard)
36 }
37
38 fn process_json(&self, decoded: Self::DecodedJson) -> anyhow::Result<Self::Result> {
39 match decoded.data {
40 None => Err(anyhow!("{}", decoded.error)),
41 Some(b) => Ok(b.status),
42 }
43 }
44}