coinbase_mesh/apis/
events_api.rs

1/*
2 * Rosetta
3 *
4 * Build Once. Integrate Your Blockchain Everywhere. 
5 *
6 * The version of the OpenAPI document: 1.4.13
7 * 
8 * Generated by: https://openapi-generator.tech
9 */
10
11
12use reqwest;
13use serde::{Deserialize, Serialize};
14use crate::{apis::ResponseContent, models};
15use super::{Error, configuration};
16
17
18/// struct for typed errors of method [`events_blocks`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum EventsBlocksError {
22    Status500(models::Error),
23    UnknownValue(serde_json::Value),
24}
25
26
27/// `/events/blocks` allows the caller to query a sequence of BlockEvents indicating which blocks were added and removed from storage to reach the current state. Following BlockEvents allows lightweight clients to update their state without needing to implement their own syncing logic (like finding the common parent in a reorg).  `/events/blocks` is considered an \"indexer\" endpoint and Rosetta implementations are not required to complete it to adhere to the Rosetta spec. However, any Rosetta \"indexer\" MUST support this endpoint. 
28pub async fn events_blocks(configuration: &configuration::Configuration, events_blocks_request: models::EventsBlocksRequest) -> Result<models::EventsBlocksResponse, Error<EventsBlocksError>> {
29    let local_var_configuration = configuration;
30
31    let local_var_client = &local_var_configuration.client;
32
33    let local_var_uri_str = format!("{}/events/blocks", local_var_configuration.base_path);
34    let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
35
36    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
37        local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
38    }
39    local_var_req_builder = local_var_req_builder.json(&events_blocks_request);
40
41    let local_var_req = local_var_req_builder.build()?;
42    let local_var_resp = local_var_client.execute(local_var_req).await?;
43
44    let local_var_status = local_var_resp.status();
45    let local_var_content = local_var_resp.text().await?;
46
47    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
48        serde_json::from_str(&local_var_content).map_err(Error::from)
49    } else {
50        let local_var_entity: Option<EventsBlocksError> = serde_json::from_str(&local_var_content).ok();
51        let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
52        Err(Error::ResponseError(local_var_error))
53    }
54}
55