kabu_rpc_handler/
router.rs

1use 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;
5//use crate::openapi::ApiDoc;
6use 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;
13//use utoipa::OpenApi;
14//use utoipa_swagger_ui::SwaggerUi;
15
16pub 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()) // rename to node
24                .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}