1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use crate::ShadowShared;
use actix_web::{middleware, web, App, HttpServer};
pub mod eth;
mod root;
pub async fn serve(port: u16, shared: ShadowShared) -> std::io::Result<()> {
HttpServer::new(move || {
App::new()
.wrap(middleware::Compress::default())
.wrap(middleware::Logger::default())
.data(shared.clone())
.service(web::resource("/version").to(root::version))
.service(web::resource("/eth/count").route(web::get().to(eth::count)))
.service(web::resource("/eth/proposal").to(eth::proposal))
.service(web::resource("/eth/receipt/{tx}/{last}").to(eth::receipt))
.service(web::resource("/eth/header/{block}").to(eth::header))
})
.disable_signals()
.bind(format!("0.0.0.0:{}", port))?
.run()
.await
}