Update bootstrapper for API changes
This commit is contained in:
parent
7d11d78299
commit
a358bbc1b1
@ -3,9 +3,10 @@ use eth2_libp2p::{
|
|||||||
Enr,
|
Enr,
|
||||||
};
|
};
|
||||||
use reqwest::{Error as HttpError, Url};
|
use reqwest::{Error as HttpError, Url};
|
||||||
|
use serde::Deserialize;
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
use std::net::Ipv4Addr;
|
use std::net::Ipv4Addr;
|
||||||
use types::{BeaconBlock, BeaconState, Checkpoint, EthSpec, Slot};
|
use types::{BeaconBlock, BeaconState, Checkpoint, EthSpec, Hash256, Slot};
|
||||||
use url::Host;
|
use url::Host;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
@ -84,9 +85,11 @@ impl Bootstrapper {
|
|||||||
let genesis_slot = Slot::new(0);
|
let genesis_slot = Slot::new(0);
|
||||||
|
|
||||||
let block = get_block(self.url.clone(), genesis_slot)
|
let block = get_block(self.url.clone(), genesis_slot)
|
||||||
.map_err(|e| format!("Unable to get genesis block: {:?}", e))?;
|
.map_err(|e| format!("Unable to get genesis block: {:?}", e))?
|
||||||
|
.beacon_block;
|
||||||
let state = get_state(self.url.clone(), genesis_slot)
|
let state = get_state(self.url.clone(), genesis_slot)
|
||||||
.map_err(|e| format!("Unable to get genesis state: {:?}", e))?;
|
.map_err(|e| format!("Unable to get genesis state: {:?}", e))?
|
||||||
|
.beacon_state;
|
||||||
|
|
||||||
Ok((state, block))
|
Ok((state, block))
|
||||||
}
|
}
|
||||||
@ -99,9 +102,11 @@ impl Bootstrapper {
|
|||||||
.map_err(|e| format!("Unable to get finalized slot: {:?}", e))?;
|
.map_err(|e| format!("Unable to get finalized slot: {:?}", e))?;
|
||||||
|
|
||||||
let block = get_block(self.url.clone(), finalized_slot)
|
let block = get_block(self.url.clone(), finalized_slot)
|
||||||
.map_err(|e| format!("Unable to get finalized block: {:?}", e))?;
|
.map_err(|e| format!("Unable to get finalized block: {:?}", e))?
|
||||||
|
.beacon_block;
|
||||||
let state = get_state(self.url.clone(), finalized_slot)
|
let state = get_state(self.url.clone(), finalized_slot)
|
||||||
.map_err(|e| format!("Unable to get finalized state: {:?}", e))?;
|
.map_err(|e| format!("Unable to get finalized state: {:?}", e))?
|
||||||
|
.beacon_state;
|
||||||
|
|
||||||
Ok((state, block))
|
Ok((state, block))
|
||||||
}
|
}
|
||||||
@ -132,7 +137,14 @@ fn get_finalized_slot(mut url: Url, slots_per_epoch: u64) -> Result<Slot, Error>
|
|||||||
Ok(checkpoint.epoch.start_slot(slots_per_epoch))
|
Ok(checkpoint.epoch.start_slot(slots_per_epoch))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_state<T: EthSpec>(mut url: Url, slot: Slot) -> Result<BeaconState<T>, Error> {
|
#[derive(Deserialize)]
|
||||||
|
#[serde(bound = "T: EthSpec")]
|
||||||
|
pub struct StateResponse<T: EthSpec> {
|
||||||
|
pub root: Hash256,
|
||||||
|
pub beacon_state: BeaconState<T>,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_state<T: EthSpec>(mut url: Url, slot: Slot) -> Result<StateResponse<T>, Error> {
|
||||||
url.path_segments_mut()
|
url.path_segments_mut()
|
||||||
.map(|mut url| {
|
.map(|mut url| {
|
||||||
url.push("beacon").push("state");
|
url.push("beacon").push("state");
|
||||||
@ -148,7 +160,14 @@ fn get_state<T: EthSpec>(mut url: Url, slot: Slot) -> Result<BeaconState<T>, Err
|
|||||||
.map_err(Into::into)
|
.map_err(Into::into)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_block<T: EthSpec>(mut url: Url, slot: Slot) -> Result<BeaconBlock<T>, Error> {
|
#[derive(Deserialize)]
|
||||||
|
#[serde(bound = "T: EthSpec")]
|
||||||
|
pub struct BlockResponse<T: EthSpec> {
|
||||||
|
pub root: Hash256,
|
||||||
|
pub beacon_block: BeaconBlock<T>,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_block<T: EthSpec>(mut url: Url, slot: Slot) -> Result<BlockResponse<T>, Error> {
|
||||||
url.path_segments_mut()
|
url.path_segments_mut()
|
||||||
.map(|mut url| {
|
.map(|mut url| {
|
||||||
url.push("beacon").push("block");
|
url.push("beacon").push("block");
|
||||||
|
@ -8,7 +8,7 @@ use store::Store;
|
|||||||
use types::{BeaconBlock, BeaconState, EthSpec, Hash256, Slot};
|
use types::{BeaconBlock, BeaconState, EthSpec, Hash256, Slot};
|
||||||
|
|
||||||
#[derive(Serialize)]
|
#[derive(Serialize)]
|
||||||
struct HeadResponse {
|
pub struct HeadResponse {
|
||||||
pub slot: Slot,
|
pub slot: Slot,
|
||||||
pub block_root: Hash256,
|
pub block_root: Hash256,
|
||||||
pub state_root: Hash256,
|
pub state_root: Hash256,
|
||||||
@ -35,7 +35,7 @@ pub fn get_head<T: BeaconChainTypes + 'static>(req: Request<Body>) -> ApiResult
|
|||||||
|
|
||||||
#[derive(Serialize)]
|
#[derive(Serialize)]
|
||||||
#[serde(bound = "T: EthSpec")]
|
#[serde(bound = "T: EthSpec")]
|
||||||
struct BlockResponse<T: EthSpec> {
|
pub struct BlockResponse<T: EthSpec> {
|
||||||
pub root: Hash256,
|
pub root: Hash256,
|
||||||
pub beacon_block: BeaconBlock<T>,
|
pub beacon_block: BeaconBlock<T>,
|
||||||
}
|
}
|
||||||
@ -106,7 +106,7 @@ pub fn get_block_root<T: BeaconChainTypes + 'static>(req: Request<Body>) -> ApiR
|
|||||||
|
|
||||||
#[derive(Serialize)]
|
#[derive(Serialize)]
|
||||||
#[serde(bound = "T: EthSpec")]
|
#[serde(bound = "T: EthSpec")]
|
||||||
struct StateResponse<T: EthSpec> {
|
pub struct StateResponse<T: EthSpec> {
|
||||||
pub root: Hash256,
|
pub root: Hash256,
|
||||||
pub beacon_state: BeaconState<T>,
|
pub beacon_state: BeaconState<T>,
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,6 @@ mod url_query;
|
|||||||
|
|
||||||
use beacon_chain::{BeaconChain, BeaconChainTypes};
|
use beacon_chain::{BeaconChain, BeaconChainTypes};
|
||||||
use client_network::Service as NetworkService;
|
use client_network::Service as NetworkService;
|
||||||
pub use config::Config as ApiConfig;
|
|
||||||
use hyper::rt::Future;
|
use hyper::rt::Future;
|
||||||
use hyper::service::service_fn_ok;
|
use hyper::service::service_fn_ok;
|
||||||
use hyper::{Body, Method, Response, Server, StatusCode};
|
use hyper::{Body, Method, Response, Server, StatusCode};
|
||||||
@ -24,6 +23,9 @@ use std::sync::Arc;
|
|||||||
use tokio::runtime::TaskExecutor;
|
use tokio::runtime::TaskExecutor;
|
||||||
use url_query::UrlQuery;
|
use url_query::UrlQuery;
|
||||||
|
|
||||||
|
pub use beacon::{BlockResponse, HeadResponse, StateResponse};
|
||||||
|
pub use config::Config as ApiConfig;
|
||||||
|
|
||||||
#[derive(PartialEq, Debug)]
|
#[derive(PartialEq, Debug)]
|
||||||
pub enum ApiError {
|
pub enum ApiError {
|
||||||
MethodNotAllowed(String),
|
MethodNotAllowed(String),
|
||||||
|
Loading…
Reference in New Issue
Block a user