kabu_rpc_handler/
router.rs1use crate::handler::blocks::latest_block;
2use crate::handler::flashbots::flashbots;
3use crate::handler::pools::{market_stats, pool, pool_quote, pools};
4use crate::handler::ws::ws_handler;
5use crate::openapi::ApiDoc;
7use axum::Router;
8use axum::routing::{get, post};
9use kabu_rpc_state::AppState;
10use revm::{DatabaseCommit, DatabaseRef};
11use utoipa::OpenApi;
12use utoipa_swagger_ui::SwaggerUi;
13pub fn router<DB: DatabaseRef<Error = kabu_evm_db::KabuDBError> + DatabaseCommit + Sync + Send + Clone + 'static>(
17 app_state: AppState<DB>,
18) -> Router<()> {
19 Router::new()
20 .nest(
21 "/api/v1",
22 Router::new()
23 .nest("/block", router_block()) .nest("/markets", router_market())
25 .nest("/flashbots", Router::new().route("/", post(flashbots))),
26 )
27 .route("/ws", get(ws_handler))
28 .merge(SwaggerUi::new("/swagger-ui").url("/api-docs/openapi.json", ApiDoc::openapi()))
29 .with_state(app_state)
30}
31
32pub fn router_block<DB: DatabaseRef + DatabaseCommit + Sync + Send + Clone + 'static>() -> Router<AppState<DB>> {
33 Router::new().route("/latest_block", get(latest_block))
34}
35
36pub fn router_market<DB: DatabaseRef<Error = kabu_evm_db::KabuDBError> + DatabaseCommit + Sync + Send + Clone + 'static>()
37-> Router<AppState<DB>> {
38 Router::new()
39 .route("/pools/:address", get(pool))
40 .route("/pools/:address/quote", post(pool_quote))
41 .route("/pools", get(pools))
42 .route("/", get(market_stats))
43}