mithril_signer/services/signature_publisher/
http.rs1use anyhow::Context;
2use async_trait::async_trait;
3
4use mithril_aggregator_client::{AggregatorHttpClient, query::PostRegisterSignatureQuery};
5use mithril_common::{
6 StdResult,
7 entities::{ProtocolMessage, SignedEntityType, SingleSignature},
8 messages::TryToMessageAdapter,
9};
10
11use crate::message_adapters::ToRegisterSignatureMessageAdapter;
12
13use super::SignaturePublisher;
14
15#[async_trait]
16impl SignaturePublisher for AggregatorHttpClient {
17 async fn publish(
18 &self,
19 signed_entity_type: &SignedEntityType,
20 signature: &SingleSignature,
21 protocol_message: &ProtocolMessage,
22 ) -> StdResult<()> {
23 let register_single_signature_message = ToRegisterSignatureMessageAdapter::try_adapt((
24 signed_entity_type.to_owned(),
25 signature.to_owned(),
26 protocol_message,
27 ))
28 .with_context(|| "Failed to adapt message to register single signature message")?;
29
30 self.send(PostRegisterSignatureQuery::new(
31 register_single_signature_message,
32 ))
33 .await?;
34
35 Ok(())
36 }
37}