mithril_signer/services/signer_registration/publisher/
http.rs

1use anyhow::Context;
2
3use mithril_aggregator_client::{AggregatorHttpClient, query::PostRegisterSignerQuery};
4use mithril_common::{
5    StdResult,
6    entities::{Epoch, Signer},
7    messages::TryToMessageAdapter,
8};
9
10use crate::ToRegisterSignerMessageAdapter;
11use crate::services::SignerRegistrationPublisher;
12
13#[async_trait::async_trait]
14impl SignerRegistrationPublisher for AggregatorHttpClient {
15    async fn register_signer(&self, epoch: Epoch, signer: &Signer) -> StdResult<()> {
16        let register_signer_message =
17            ToRegisterSignerMessageAdapter::try_adapt((epoch, signer.to_owned()))
18                .with_context(|| "Failed to adapt message to register signer message")?;
19
20        self.send(PostRegisterSignerQuery::new(register_signer_message))
21            .await?;
22
23        Ok(())
24    }
25}