From 8c45cd0e3683b528b65f416681c8272d5650f32d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 15 Jul 2017 03:01:39 +0200 Subject: Improve ActivityPub representations (#3844) * Improve webfinger templates and make tests more flexible * Clean up AS2 representation of actor * Refactor outbox * Create activities representation * Add representations of followers/following collections, do not redirect /users/:username route if format is empty * Remove unused translations * ActivityPub endpoint for single statuses, add ActivityPub::TagManager for better URL/URI generation * Add ActivityPub::TagManager#to * Represent all attachments as Document instead of Image/Video specifically (Because for remote ones we may not know for sure) Add mentions and hashtags representation to AP notes * Add AP-resolvable hashtag URIs * Use ActiveModelSerializers for ActivityPub * Clean up unused translations * Separate route for object and activity * Adjust cc/to matrices * Add to/cc to activities, ensure announce activity embeds target status and not the wrapper status, add "id" to all collections --- .../activities/_show_status.activitystreams2.rabl | 4 ---- .../show_status_announce.activitystreams2.rabl | 8 -------- .../activities/show_status_create.activitystreams2.rabl | 8 -------- .../api/activitypub/notes/show.activitystreams2.rabl | 11 ----------- .../api/activitypub/outbox/show.activitystreams2.rabl | 12 ------------ .../activitypub/outbox/show_page.activitystreams2.rabl | 16 ---------------- 6 files changed, 59 deletions(-) delete mode 100644 app/views/api/activitypub/activities/_show_status.activitystreams2.rabl delete mode 100644 app/views/api/activitypub/activities/show_status_announce.activitystreams2.rabl delete mode 100644 app/views/api/activitypub/activities/show_status_create.activitystreams2.rabl delete mode 100644 app/views/api/activitypub/notes/show.activitystreams2.rabl delete mode 100644 app/views/api/activitypub/outbox/show.activitystreams2.rabl delete mode 100644 app/views/api/activitypub/outbox/show_page.activitystreams2.rabl (limited to 'app/views/api/activitypub') diff --git a/app/views/api/activitypub/activities/_show_status.activitystreams2.rabl b/app/views/api/activitypub/activities/_show_status.activitystreams2.rabl deleted file mode 100644 index 472bf5dbd..000000000 --- a/app/views/api/activitypub/activities/_show_status.activitystreams2.rabl +++ /dev/null @@ -1,4 +0,0 @@ -object @status - -node(:actor) { |status| TagManager.instance.url_for(status.account) } -node(:published) { |status| status.created_at.to_time.xmlschema } \ No newline at end of file diff --git a/app/views/api/activitypub/activities/show_status_announce.activitystreams2.rabl b/app/views/api/activitypub/activities/show_status_announce.activitystreams2.rabl deleted file mode 100644 index 44ac1ba2f..000000000 --- a/app/views/api/activitypub/activities/show_status_announce.activitystreams2.rabl +++ /dev/null @@ -1,8 +0,0 @@ -extends 'activitypub/types/announce.activitystreams2.rabl' -extends 'api/activitypub/activities/_show_status.activitystreams2.rabl' - -object @status - -node(:name) { |status| t('activitypub.activity.announce.name', account_name: account_name(status.account)) } -node(:url) { |status| TagManager.instance.url_for(status) } -node(:object) { |status| api_activitypub_status_url(status.reblog_of_id) } diff --git a/app/views/api/activitypub/activities/show_status_create.activitystreams2.rabl b/app/views/api/activitypub/activities/show_status_create.activitystreams2.rabl deleted file mode 100644 index ff4d39eca..000000000 --- a/app/views/api/activitypub/activities/show_status_create.activitystreams2.rabl +++ /dev/null @@ -1,8 +0,0 @@ -extends 'activitypub/types/create.activitystreams2.rabl' -extends 'api/activitypub/activities/_show_status.activitystreams2.rabl' - -object @status - -node(:name) { |status| t('activitypub.activity.create.name', account_name: account_name(status.account)) } -node(:url) { |status| TagManager.instance.url_for(status) } -node(:object) { |status| api_activitypub_note_url(status) } diff --git a/app/views/api/activitypub/notes/show.activitystreams2.rabl b/app/views/api/activitypub/notes/show.activitystreams2.rabl deleted file mode 100644 index d962f4438..000000000 --- a/app/views/api/activitypub/notes/show.activitystreams2.rabl +++ /dev/null @@ -1,11 +0,0 @@ -extends 'activitypub/types/note.activitystreams2.rabl' - -object @status - -attributes :content - -node(:name) { |status| status.content } -node(:url) { |status| TagManager.instance.url_for(status) } -node(:attributedTo) { |status| TagManager.instance.url_for(status.account) } -node(:inReplyTo) { |status| api_activitypub_note_url(status.thread) } if @status.thread -node(:published) { |status| status.created_at.to_time.xmlschema } diff --git a/app/views/api/activitypub/outbox/show.activitystreams2.rabl b/app/views/api/activitypub/outbox/show.activitystreams2.rabl deleted file mode 100644 index 273b15e82..000000000 --- a/app/views/api/activitypub/outbox/show.activitystreams2.rabl +++ /dev/null @@ -1,12 +0,0 @@ -extends 'activitypub/types/ordered_collection.activitystreams2.rabl' - -object @account - -node(:totalItems) { @statuses.count } -node(:current) { @first_page_url } if @first_page_url -node(:first) { @first_page_url } if @first_page_url -node(:last) { @last_page_url } if @last_page_url - -node(:name) { |account| t('activitypub.outbox.name', account_name: account_name(account)) } -node(:summary) { |account| t('activitypub.outbox.summary', account_name: account_name(account)) } -node(:updated) { |account| (@statuses.empty? ? account.created_at.to_time : @statuses.first.updated_at.to_time).xmlschema } diff --git a/app/views/api/activitypub/outbox/show_page.activitystreams2.rabl b/app/views/api/activitypub/outbox/show_page.activitystreams2.rabl deleted file mode 100644 index b6433ccf2..000000000 --- a/app/views/api/activitypub/outbox/show_page.activitystreams2.rabl +++ /dev/null @@ -1,16 +0,0 @@ -extends 'activitypub/types/ordered_collection_page.activitystreams2.rabl' - -object @account - -node(:items) do - @statuses.map { |status| api_activitypub_status_url(status) } -end - -node(:next) { @next_page_url } if @next_page_url -node(:prev) { @prev_page_url } if @prev_page_url -node(:current) { @first_page_url } if @first_page_url -node(:first) { @first_page_url } if @first_page_url -node(:last) { @last_page_url } if @last_page_url -node(:partOf) { @part_of_url } if @part_of_url - -node(:updated) { |account| (@statuses.empty? ? account.created_at.to_time : @statuses.first.updated_at.to_time).xmlschema } -- cgit