From 09cd32034b256c144906b6a61bf4595642c4a0e4 Mon Sep 17 00:00:00 2001
From: Dessalines <dessalines@users.noreply.github.com>
Date: Mon, 15 Nov 2021 15:26:48 -0500
Subject: [PATCH] Fixing activity serialization. Fixes #1900 (#1901)

---
 crates/apub/src/context.rs  | 16 ++++++++++++++++
 crates/apub/src/http/mod.rs | 10 ++++++++--
 2 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/crates/apub/src/context.rs b/crates/apub/src/context.rs
index 55486872..a3a223a3 100644
--- a/crates/apub/src/context.rs
+++ b/crates/apub/src/context.rs
@@ -25,3 +25,19 @@ impl<T> WithContext<T> {
     self.inner
   }
 }
+
+#[derive(Serialize, Deserialize)]
+pub(crate) struct WithContextJson {
+  #[serde(rename = "@context")]
+  context: OneOrMany<AnyBase>,
+  inner: serde_json::Value,
+}
+
+impl WithContextJson {
+  pub(crate) fn new(inner: serde_json::Value) -> WithContextJson {
+    WithContextJson {
+      context: CONTEXT.clone(),
+      inner,
+    }
+  }
+}
diff --git a/crates/apub/src/http/mod.rs b/crates/apub/src/http/mod.rs
index d35815ab..3dd068dd 100644
--- a/crates/apub/src/http/mod.rs
+++ b/crates/apub/src/http/mod.rs
@@ -1,7 +1,7 @@
 use crate::{
   activity_lists::SharedInboxActivities,
   check_is_apub_id_valid,
-  context::WithContext,
+  context::{WithContext, WithContextJson},
   fetcher::user_or_community::UserOrCommunity,
   http::{community::receive_group_inbox, person::receive_person_inbox},
   insert_activity,
@@ -129,6 +129,12 @@ where
     .json(WithContext::new(data))
 }
 
+fn create_json_apub_response(data: serde_json::Value) -> HttpResponse<Body> {
+  HttpResponse::Ok()
+    .content_type(APUB_JSON_CONTENT_TYPE)
+    .json(WithContextJson::new(data))
+}
+
 fn create_apub_tombstone_response<T>(data: &T) -> HttpResponse<Body>
 where
   T: Serialize,
@@ -167,7 +173,7 @@ pub(crate) async fn get_activity(
   if !activity.local || sensitive {
     Ok(HttpResponse::NotFound().finish())
   } else {
-    Ok(create_apub_response(&activity.data))
+    Ok(create_json_apub_response(activity.data))
   }
 }
 
-- 
2.44.1