From 887671af5ddbc09af18c1d888713fabd64d697ba Mon Sep 17 00:00:00 2001 From: DJO <790521+Alenar@users.noreply.github.com> Date: Wed, 4 Oct 2023 13:35:47 +0200 Subject: [PATCH] Add cardano network to `/signers/tickers` response --- mithril-aggregator/src/entities/mod.rs | 2 +- .../src/entities/signer_ticker_message.rs | 12 +++++- .../src/http_server/routes/signer_routes.rs | 20 ++++++--- openapi.yaml | 41 ++++++++++++++++--- 4 files changed, 62 insertions(+), 13 deletions(-) diff --git a/mithril-aggregator/src/entities/mod.rs b/mithril-aggregator/src/entities/mod.rs index 602f457f192..1638ceab2d4 100644 --- a/mithril-aggregator/src/entities/mod.rs +++ b/mithril-aggregator/src/entities/mod.rs @@ -9,4 +9,4 @@ pub use open_message::OpenMessage; pub use signer_registration_message::{ SignerRegistrationsListItemMessage, SignerRegistrationsMessage, }; -pub use signer_ticker_message::SignerTickerMessage; +pub use signer_ticker_message::{SignerTickerListItemMessage, SignersTickersMessage}; diff --git a/mithril-aggregator/src/entities/signer_ticker_message.rs b/mithril-aggregator/src/entities/signer_ticker_message.rs index d1dffcd6f8d..2aee704c59e 100644 --- a/mithril-aggregator/src/entities/signer_ticker_message.rs +++ b/mithril-aggregator/src/entities/signer_ticker_message.rs @@ -3,7 +3,7 @@ use serde::{Deserialize, Serialize}; /// Message structure of a known signer #[derive(Clone, Debug, PartialEq, Eq, Default, Serialize, Deserialize)] -pub struct SignerTickerMessage { +pub struct SignerTickerListItemMessage { /// The signer party id pub party_id: PartyId, @@ -14,3 +14,13 @@ pub struct SignerTickerMessage { /// True if the signer have registered at least once pub has_registered: bool, } + +/// Message structure of signers known by the aggregator +#[derive(Clone, Debug, PartialEq, Eq, Default, Serialize, Deserialize)] +pub struct SignersTickersMessage { + /// Cardano network of the aggregator + pub network: String, + + /// Known signers + pub signers: Vec, +} diff --git a/mithril-aggregator/src/http_server/routes/signer_routes.rs b/mithril-aggregator/src/http_server/routes/signer_routes.rs index e5b8ae7c095..bd38e8df24b 100644 --- a/mithril-aggregator/src/http_server/routes/signer_routes.rs +++ b/mithril-aggregator/src/http_server/routes/signer_routes.rs @@ -39,6 +39,7 @@ fn signers_tickers( ) -> impl Filter + Clone { warp::path!("signers" / "tickers") .and(warp::get()) + .and(middlewares::with_config(dependency_manager.clone())) .and(middlewares::with_signer_getter(dependency_manager)) .and_then(handlers::signers_tickers) } @@ -55,9 +56,13 @@ fn registered_signers( mod handlers { use crate::database::provider::SignerGetter; - use crate::entities::{SignerRegistrationsMessage, SignerTickerMessage}; + use crate::entities::{ + SignerRegistrationsMessage, SignerTickerListItemMessage, SignersTickersMessage, + }; use crate::event_store::{EventMessage, TransmitterService}; - use crate::{http_server::routes::reply, SignerRegisterer, SignerRegistrationError}; + use crate::{ + http_server::routes::reply, Configuration, SignerRegisterer, SignerRegistrationError, + }; use crate::{FromRegisterSignerAdapter, VerificationKeyStorer}; use mithril_common::entities::Epoch; use mithril_common::messages::{RegisterSignerMessage, TryFromMessageAdapter}; @@ -202,21 +207,26 @@ mod handlers { } pub async fn signers_tickers( + configuration: Configuration, signer_getter: Arc, ) -> Result { debug!("⇄ HTTP SERVER: signers/tickers"); + let network = configuration.network; match signer_getter.get_all().await { Ok(signers) => { - let message: Vec<_> = signers + let signers: Vec<_> = signers .into_iter() - .map(|s| SignerTickerMessage { + .map(|s| SignerTickerListItemMessage { party_id: s.signer_id, pool_ticker: s.pool_ticker, has_registered: s.last_registered_at.is_some(), }) .collect(); - Ok(reply::json(&message, StatusCode::OK)) + Ok(reply::json( + &SignersTickersMessage { network, signers }, + StatusCode::OK, + )) } Err(err) => { warn!("registered_signers::error"; "error" => ?err); diff --git a/openapi.yaml b/openapi.yaml index 95190a5758c..af396624d47 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -308,9 +308,7 @@ paths: content: application/json: schema: - type: array - items: - $ref: "#/components/schemas/SignerTickerMessage" + $ref: "#/components/schemas/SignersTickersMessage" "412": description: API version mismatch default: @@ -661,8 +659,8 @@ components: $ref: "#/components/schemas/Epoch" registrations: type: array - items: - $ref: "#/components/schemas/SignerRegistrationsListItemMessage" + items: + $ref: "#/components/schemas/SignerRegistrationsListItemMessage" example: { "registered_at": 420, @@ -686,7 +684,38 @@ components: description: The unique identifier of the signer type: string - SignerTickerMessage: + SignersTickersMessage: + description: represents the list of signers known by the aggregator + type: object + required: + - network + - signers + properties: + network: + description: Cardano network of the aggregator + type: string + format: bytes + signers: + description: Known signers + items: + $ref: "#/components/schemas/SignerTickerListItemMessage" + example: + { + "network": "mainnet", + "signers": [ + { + "party_id": "pool1234567890", + "pool_ticker": "[Pool_Name]", + "has_registered": true + }, + { + "party_id": "pool0987654321", + "has_registered": false + } + ] + } + + SignerTickerListItemMessage: description: represents a known signer with its pool ticker type: object additionalProperties: true