server: api doc part 5

This commit is contained in:
nym21
2025-10-08 20:32:27 +02:00
parent 83d74da556
commit 6ad15221de
11 changed files with 418 additions and 308 deletions

View File

@@ -21,7 +21,7 @@ use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use vecdb::VecIterator;
use crate::extended::TransformResponseExtended;
use crate::extended::{ResponseExtended, TransformResponseExtended};
use super::AppState;
@@ -140,10 +140,7 @@ async fn get_transaction_info(
let bytes = sonic_rs::to_vec(&tx_info).unwrap();
Ok(Response::builder()
.header("content-type", "application/json")
.body(bytes.into())
.unwrap())
Ok(Response::new_json_from_bytes(bytes))
}
fn get_transaction_info_docs(op: TransformOperation) -> TransformOperation {

View File

@@ -91,16 +91,14 @@ fn req_to_response_res(
match interface.format(vecs, &params.rest)? {
Output::CSV(s) => {
if let GuardResult::Guard(g) = guard_res {
g.insert(s.clone().into())
.map_err(|_| Error::QuickCacheError)?;
let _ = g.insert(s.clone().into());
}
s.into_response()
}
Output::Json(v) => {
let json = v.to_vec();
if let GuardResult::Guard(g) = guard_res {
g.insert(json.clone().into())
.map_err(|_| Error::QuickCacheError)?;
let _ = g.insert(json.clone().into());
}
json.into_response()
}

View File

@@ -103,10 +103,7 @@ impl ApiMetricsRoutes for ApiRouter<AppState> {
let bytes = sonic_rs::to_vec(&app_state.interface.get_metrics_catalog()).unwrap();
let mut response = Response::builder()
.header("content-type", "application/json")
.body(bytes.into())
.unwrap();
let mut response = Response::new_json_from_bytes(bytes);
let headers = response.headers_mut();
headers.insert_cors();

View File

@@ -6,7 +6,8 @@ use aide::{
};
use axum::{
Extension, Json,
response::{Html, Redirect},
http::HeaderMap,
response::{Html, Redirect, Response},
routing::get,
};
use schemars::JsonSchema;
@@ -15,7 +16,7 @@ use serde::Serialize;
use crate::{
VERSION,
api::{chain::ChainRoutes, metrics::ApiMetricsRoutes},
extended::TransformResponseExtended,
extended::{HeaderMapExtended, ResponseExtended, TransformResponseExtended},
};
use super::AppState;
@@ -76,8 +77,26 @@ impl ApiRoutes for ApiRouter<AppState> {
.route(
"/api.json",
get(
async |Extension(api): Extension<Arc<OpenApi>>| -> Json<Arc<OpenApi>> {
Json(api)
async |headers: HeaderMap,
Extension(api): Extension<Arc<OpenApi>>|
-> Response {
let etag = VERSION;
if headers
.get_if_none_match()
.is_some_and(|prev_etag| etag == prev_etag)
{
return Response::new_not_modified();
}
let mut response =
Response::new_json_from_bytes(sonic_rs::to_vec(&api).unwrap());
let headers = response.headers_mut();
headers.insert_cors();
headers.insert_etag(etag);
response
},
),
)