]> Untitled Git - lemmy.git/blobdiff - lemmy_apub/src/activity_queue.rs
send activities sync for tests
[lemmy.git] / lemmy_apub / src / activity_queue.rs
index 5e4f113b5dc0fd9c5c98386c8b9676bb2a2af095..1b5ffb937a2ec3c3f7274aa5bc16df1c2950bf20 100644 (file)
@@ -25,7 +25,7 @@ use lemmy_websocket::LemmyContext;
 use log::{debug, warn};
 use reqwest::Client;
 use serde::{export::fmt::Debug, Deserialize, Serialize};
-use std::{collections::BTreeMap, future::Future, pin::Pin};
+use std::{collections::BTreeMap, future::Future, pin::Pin, env};
 use url::Url;
 
 /// Sends a local activity to a single, remote actor.
@@ -234,7 +234,11 @@ where
       actor_id: actor.actor_id()?,
       private_key: actor.private_key().context(location_info!())?,
     };
-    activity_sender.queue::<SendActivityTask>(message)?;
+    if env::var("LEMMY_TEST_SEND_SYNC").is_ok() {
+      do_send(message, &Client::default()).await?;
+    } else {
+      activity_sender.queue::<SendActivityTask>(message)?;
+    }
   }
 
   Ok(())
@@ -260,29 +264,33 @@ impl ActixJob for SendActivityTask {
 
   fn run(self, state: Self::State) -> Self::Future {
     Box::pin(async move {
-      let mut headers = BTreeMap::<String, String>::new();
-      headers.insert("Content-Type".into(), "application/json".into());
-      let result = sign_and_send(
-        &state.client,
-        headers,
-        &self.inbox,
-        self.activity.clone(),
-        &self.actor_id,
-        self.private_key.to_owned(),
-      )
-      .await;
+      do_send(self, &state.client).await
+    })
+  }
+}
 
-      if let Err(e) = result {
-        warn!("{}", e);
-        return Err(anyhow!(
+async fn do_send(task: SendActivityTask, client: &Client) -> Result<(), Error>{
+  let mut headers = BTreeMap::<String, String>::new();
+  headers.insert("Content-Type".into(), "application/json".into());
+  let result = sign_and_send(
+    client,
+    headers,
+    &task.inbox,
+    task.activity.clone(),
+    &task.actor_id,
+    task.private_key.to_owned(),
+  )
+    .await;
+
+  if let Err(e) = result {
+    warn!("{}", e);
+    return Err(anyhow!(
           "Failed to send activity {} to {}",
-          &self.activity,
-          self.inbox
+          &task.activity,
+          task.inbox
         ));
-      }
-      Ok(())
-    })
   }
+  Ok(())
 }
 
 pub fn create_activity_queue() -> QueueHandle {