From 7cf8a77a730158fc7905710c417f1b9e65e89fbe Mon Sep 17 00:00:00 2001 From: Ryan Barrett Date: Sun, 19 May 2024 14:44:54 -0700 Subject: [PATCH] ActivityPub.postprocess_as2: always populate images into attachments as objects hopefully for https://github.com/snarfed/bridgy-fed/issues/1000#issuecomment-2119106644, ATProto images without alt text not showing up in AP --- activitypub.py | 3 ++- tests/test_activitypub.py | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/activitypub.py b/activitypub.py index aa424cb..08e7b47 100644 --- a/activitypub.py +++ b/activitypub.py @@ -685,7 +685,8 @@ def postprocess_as2(activity, orig_obj=None, wrap=True): imgs = util.get_list(obj_or_activity, 'image') if imgs: atts = obj_or_activity['attachment'] - atts.extend(img for img in imgs if img not in atts) + atts.extend((img if isinstance(img, dict) else {'url': img}) + for img in imgs if img not in atts) # cc target's author(s), recipients, mentions # https://www.w3.org/TR/activitystreams-vocabulary/#audienceTargeting diff --git a/tests/test_activitypub.py b/tests/test_activitypub.py index e6e0892..88cfa59 100644 --- a/tests/test_activitypub.py +++ b/tests/test_activitypub.py @@ -1950,6 +1950,17 @@ class ActivityPubUtilsTest(TestCase): 'image': [{'url': 'http://r/foo'}, {'url': 'http://r/bar'}], })) + def test_postprocess_as2_image_bare_string_url(self): + self.assert_equals({ + 'id': 'http://localhost/r/xyz', + 'attachment': [{'url': 'http://r/foo'}], + 'image': ['http://r/foo'], + 'to': [as2.PUBLIC_AUDIENCE], + }, postprocess_as2({ + 'id': 'xyz', + 'image': ['http://r/foo'], + })) + def test_postprocess_as2_note(self): self.assert_equals({ 'id': 'http://localhost/r/xyz',