Skip to content

Commit

Permalink
Add cardano network to /signers/tickers response
Browse files Browse the repository at this point in the history
  • Loading branch information
Alenar committed Oct 4, 2023
1 parent be456f8 commit 887671a
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 13 deletions.
2 changes: 1 addition & 1 deletion mithril-aggregator/src/entities/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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};
12 changes: 11 additions & 1 deletion mithril-aggregator/src/entities/signer_ticker_message.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,

Expand All @@ -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<SignerTickerListItemMessage>,
}
20 changes: 15 additions & 5 deletions mithril-aggregator/src/http_server/routes/signer_routes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ fn signers_tickers(
) -> impl Filter<Extract = (impl warp::Reply,), Error = warp::Rejection> + 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)
}
Expand All @@ -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};
Expand Down Expand Up @@ -202,21 +207,26 @@ mod handlers {
}

pub async fn signers_tickers(
configuration: Configuration,
signer_getter: Arc<dyn SignerGetter>,
) -> Result<impl warp::Reply, Infallible> {
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);
Expand Down
41 changes: 35 additions & 6 deletions openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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,
Expand All @@ -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
Expand Down

0 comments on commit 887671a

Please sign in to comment.