#![allow(deprecated)]
use std::sync::Arc;
use trust_tasks_rs::{
discovery::DiscoveryRegistry, specs::trust_task_discovery::v0_1 as discovery_v0_1,
specs::trust_task_discovery::v0_2 as discovery_v0_2,
};
use super::{refuse_unauthenticated_discovery, HttpsServerBuilder};
pub(super) fn register(registry: &mut DiscoveryRegistry) {
registry.register_payload::<discovery_v0_1::Payload>();
registry.register_payload::<discovery_v0_2::Payload>();
}
impl HttpsServerBuilder {
pub(super) fn with_superseded_discovery(self, registry: DiscoveryRegistry) -> Self {
let public_v0_1 = Arc::clone(&self.public_discovery);
let public_v0_2 = Arc::clone(&self.public_discovery);
let registry_v0_2 = registry.clone();
self.on::<discovery_v0_1::Payload, _>(move |req, ctx| {
refuse_unauthenticated_discovery(&public_v0_1, ctx.authenticated_sender.is_none())?;
Ok(registry.respond_to(&req.payload))
})
.on::<discovery_v0_2::Payload, _>(move |req, ctx| {
refuse_unauthenticated_discovery(&public_v0_2, ctx.authenticated_sender.is_none())?;
Ok(registry_v0_2.respond_to_v0_2(&req.payload))
})
}
}