From 04e4378352e5de342d0bdac7112f52cb6ea4c0b6 Mon Sep 17 00:00:00 2001 From: Simon Wicky Date: Tue, 20 May 2025 16:18:09 +0200 Subject: [PATCH] add multiple output for semi-skimmed endpoint --- Cargo.lock | 2 +- .../v1/nym_nodes/semi_skimmed/mod.rs | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7cad6101df..df4c5f9fb6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6783,7 +6783,7 @@ dependencies = [ "nym-crypto", "nym-noise-keys", "pin-project", - "sha2 0.10.8", + "sha2 0.10.9", "snow", "strum 0.26.3", "thiserror 2.0.12", diff --git a/nym-api/src/unstable_routes/v1/nym_nodes/semi_skimmed/mod.rs b/nym-api/src/unstable_routes/v1/nym_nodes/semi_skimmed/mod.rs index f0a20a4146..8fd027af25 100644 --- a/nym-api/src/unstable_routes/v1/nym_nodes/semi_skimmed/mod.rs +++ b/nym-api/src/unstable_routes/v1/nym_nodes/semi_skimmed/mod.rs @@ -8,7 +8,6 @@ use crate::nym_nodes::handlers::unstable::NodesParamsWithRole; use crate::support::http::state::AppState; use crate::unstable_routes::v1::nym_nodes::helpers::NodesParamsWithRole; use axum::extract::{Query, State}; -use axum::Json; use nym_api_requests::models::{ NodeAnnotation, NymNodeDescription, OffsetDateTimeJsonSchemaWrapper, }; @@ -100,12 +99,16 @@ pub struct PaginatedCachedNodesExpandedResponseSchema { path = "", context_path = "/v1/unstable/nym-nodes/semi-skimmed", responses( - (status = 200, body = PaginatedCachedNodesExpandedResponseSchema) + (status = 200, content( + (PaginatedCachedNodesExpandedResponseSchema = "application/json"), + (PaginatedCachedNodesExpandedResponseSchema = "application/yaml"), + (PaginatedCachedNodesExpandedResponseSchema = "application/bincode") + )) ) )] pub(super) async fn nodes_expanded( state: State, - _query_params: Query, + query_params: Query, ) -> PaginatedSemiSkimmedNodes { // 1. grab all relevant described nym-nodes let rewarded_set = state.rewarded_set().await?; @@ -133,8 +136,6 @@ pub(super) async fn nodes_expanded( legacy_gateways.timestamp(), ]); - Ok(Json(PaginatedCachedNodesResponse::new_full( - refreshed_at, - nodes, - ))) + let output = query_params.output.unwrap_or_default(); + Ok(output.to_response(PaginatedCachedNodesResponse::new_full(refreshed_at, nodes))) }