aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaelwenn <contact+git.pleroma.social@hacktivis.me>2022-07-22 19:00:23 +0000
committerHaelwenn <contact+git.pleroma.social@hacktivis.me>2022-07-22 19:00:23 +0000
commit3b2bac7a0f8ace908bbb665c2ea1080ca8e6eacc (patch)
tree943d72191d175bd3b0c3ef51d4a5b6fee33e4d27
parentc589b8445f1479b25d31984176f3741def83bcaa (diff)
parenteba16665752d3e6be6b5a2df8cebeb4e22c9cad0 (diff)
downloadpleroma-3b2bac7a0f8ace908bbb665c2ea1080ca8e6eacc.tar.gz
Merge branch 'fix-owncast' into 'develop'
Fix owncast See merge request pleroma/pleroma!3706
-rw-r--r--lib/pleroma/web/activity_pub/object_validators/article_note_page_validator.ex6
-rw-r--r--lib/pleroma/web/activity_pub/object_validators/attachment_validator.ex2
-rw-r--r--test/fixtures/owncast-note-with-attachment.json31
-rw-r--r--test/pleroma/web/activity_pub/object_validators/article_note_page_validator_test.exs11
4 files changed, 49 insertions, 1 deletions
diff --git a/lib/pleroma/web/activity_pub/object_validators/article_note_page_validator.ex b/lib/pleroma/web/activity_pub/object_validators/article_note_page_validator.ex
index ca335bc8a..57c8d1dc0 100644
--- a/lib/pleroma/web/activity_pub/object_validators/article_note_page_validator.ex
+++ b/lib/pleroma/web/activity_pub/object_validators/article_note_page_validator.ex
@@ -65,6 +65,11 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator do
defp fix_replies(data), do: data
+ def fix_attachments(%{"attachment" => attachment} = data) when is_map(attachment),
+ do: Map.put(data, "attachment", [attachment])
+
+ def fix_attachments(data), do: data
+
defp fix(data) do
data
|> CommonFixes.fix_actor()
@@ -72,6 +77,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator do
|> fix_url()
|> fix_tag()
|> fix_replies()
+ |> fix_attachments()
|> Transmogrifier.fix_emoji()
|> Transmogrifier.fix_content_map()
end
diff --git a/lib/pleroma/web/activity_pub/object_validators/attachment_validator.ex b/lib/pleroma/web/activity_pub/object_validators/attachment_validator.ex
index 8b641d88d..cf6e407e0 100644
--- a/lib/pleroma/web/activity_pub/object_validators/attachment_validator.ex
+++ b/lib/pleroma/web/activity_pub/object_validators/attachment_validator.ex
@@ -59,7 +59,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator do
end
def fix_media_type(data) do
- Map.put_new(data, "mediaType", data["mimeType"])
+ Map.put_new(data, "mediaType", data["mimeType"] || "application/octet-stream")
end
defp handle_href(href, mediaType, data) do
diff --git a/test/fixtures/owncast-note-with-attachment.json b/test/fixtures/owncast-note-with-attachment.json
new file mode 100644
index 000000000..68cb6bbf7
--- /dev/null
+++ b/test/fixtures/owncast-note-with-attachment.json
@@ -0,0 +1,31 @@
+{
+ "attachment": {
+ "content": "Live stream preview",
+ "type": "Image",
+ "url": "https://owncast.localhost.localdomain/preview.gif?us=KjfNX387gm"
+ },
+ "attributedTo": "https://owncast.localhost.localdomain/federation/user/streamer",
+ "audience": "https://www.w3.org/ns/activitystreams#Public",
+ "content": "<p>I've gone live!</p><p></p><p><a class=\"hashtag\" href=\"https://directory.owncast.online/tags/owncast\">#owncast</a> <a class=\"hashtag\" href=\"https://directory.owncast.online/tags/streaming\">#streaming</a></p><a href=\"https://owncast.localhost.localdomain\">https://owncast.localhost.localdomain</a>",
+ "id": "https://owncast.localhost.localdomain/federation/KjBNuq8ng",
+ "published": "2022-04-17T15:42:03Z",
+ "tag": [
+ {
+ "href": "https://directory.owncast.online/tags/owncast",
+ "name": "#owncast",
+ "type": "Hashtag"
+ },
+ {
+ "href": "https://directory.owncast.online/tags/streaming",
+ "name": "#streaming",
+ "type": "Hashtag"
+ },
+ {
+ "href": "https://directory.owncast.online/tags/owncast",
+ "name": "#owncast",
+ "type": "Hashtag"
+ }
+ ],
+ "to": "https://www.w3.org/ns/activitystreams#Public",
+ "type": "Note"
+}
diff --git a/test/pleroma/web/activity_pub/object_validators/article_note_page_validator_test.exs b/test/pleroma/web/activity_pub/object_validators/article_note_page_validator_test.exs
index f93537ed8..e59bf6787 100644
--- a/test/pleroma/web/activity_pub/object_validators/article_note_page_validator_test.exs
+++ b/test/pleroma/web/activity_pub/object_validators/article_note_page_validator_test.exs
@@ -43,4 +43,15 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidatorTest
%{valid?: true} = ArticleNotePageValidator.cast_and_validate(note)
end
+
+ test "a note with an attachment should work", _ do
+ insert(:user, %{ap_id: "https://owncast.localhost.localdomain/federation/user/streamer"})
+
+ note =
+ "test/fixtures/owncast-note-with-attachment.json"
+ |> File.read!()
+ |> Jason.decode!()
+
+ %{valid?: true} = ArticleNotePageValidator.cast_and_validate(note)
+ end
end