relay_knowledge/adapters/
worker_outbound.rs1use crate::{
4 net::{NetworkRuntime, http},
5 ports::worker_outbound::{WorkerOutboundError, WorkerOutboundFuture, WorkerOutboundPort},
6};
7
8#[derive(Clone)]
9pub struct NetworkWorkerOutbound {
10 network: NetworkRuntime,
11}
12
13impl NetworkWorkerOutbound {
14 pub fn new(network: NetworkRuntime) -> Self {
15 Self { network }
16 }
17}
18
19impl WorkerOutboundPort for NetworkWorkerOutbound {
20 fn post_json<'a>(
21 &'a self,
22 endpoint: &'a str,
23 payload: &'a serde_json::Value,
24 ) -> WorkerOutboundFuture<'a> {
25 Box::pin(async move {
26 let network = self.network.current();
27 http::post_json_with_qos(
28 &network.http,
29 &self.network.qos_runtime(),
30 &network.qos,
31 endpoint,
32 payload,
33 )
34 .await
35 .map_err(|error| WorkerOutboundError {
36 message: error.to_string(),
37 })
38 })
39 }
40}