mina_node_native/http_server/routes/
snark_pool.rs1use axum::{
7 extract::{Path, State},
8 Json,
9};
10use utoipa_axum::{router::OpenApiRouter, routes};
11
12use mina_node::{
13 core::snark::SnarkJobId,
14 rpc::{RpcRequest, RpcSnarkPoolGetResponse, RpcSnarkPoolJobGetResponse},
15};
16
17use crate::http_server::{AppResult, AppState};
18
19pub fn routes() -> OpenApiRouter<AppState> {
21 OpenApiRouter::new()
22 .routes(routes!(jobs))
23 .routes(routes!(job))
24}
25
26#[utoipa::path(
28 get,
29 path = "/snark-pool/jobs",
30 tag = "snark-pool",
31 responses(
32 (status = 200, description = "Snark pool jobs")
33 )
34)]
35async fn jobs(State(state): State<AppState>) -> AppResult<Json<RpcSnarkPoolGetResponse>> {
36 jsonify_rpc!(state, RpcRequest::SnarkPoolGet)
37}
38
39#[utoipa::path(
41 get,
42 path = "/snark-pool/job/{job_id}",
43 tag = "snark-pool",
44 params(
45 ("job_id" = String, Path, description = "Snark job ID")
46 ),
47 responses(
48 (status = 200, description = "Snark pool job")
49 )
50)]
51async fn job(
52 State(state): State<AppState>,
53 Path(job_id): Path<SnarkJobId>,
54) -> AppResult<Json<RpcSnarkPoolJobGetResponse>> {
55 jsonify_rpc!(state, RpcRequest::SnarkPoolJobGet { job_id })
56}