diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2020-06-02 19:24:53 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-02 19:24:53 +0200 |
commit | 5d8398c8b8b51ee7363e7d45acc560f489783e34 (patch) | |
tree | 1e0b663049feafdc003ad3c01b25bf5d5d793402 /app/presenters/activitypub | |
parent | 9b7e3b4774d47c184aa759364d41f40e0cdfa210 (diff) |
Add E2EE API (#13820)
Diffstat (limited to 'app/presenters/activitypub')
-rw-r--r-- | app/presenters/activitypub/activity_presenter.rb | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/app/presenters/activitypub/activity_presenter.rb b/app/presenters/activitypub/activity_presenter.rb new file mode 100644 index 000000000..5d174767f --- /dev/null +++ b/app/presenters/activitypub/activity_presenter.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +class ActivityPub::ActivityPresenter < ActiveModelSerializers::Model + attributes :id, :type, :actor, :published, :to, :cc, :virtual_object + + class << self + def from_status(status) + new.tap do |presenter| + presenter.id = ActivityPub::TagManager.instance.activity_uri_for(status) + presenter.type = status.reblog? ? 'Announce' : 'Create' + presenter.actor = ActivityPub::TagManager.instance.uri_for(status.account) + presenter.published = status.created_at + presenter.to = ActivityPub::TagManager.instance.to(status) + presenter.cc = ActivityPub::TagManager.instance.cc(status) + + presenter.virtual_object = begin + if status.reblog? + if status.account == status.proper.account && status.proper.private_visibility? && status.local? + status.proper + else + ActivityPub::TagManager.instance.uri_for(status.proper) + end + else + status.proper + end + end + end + end + + def from_encrypted_message(encrypted_message) + new.tap do |presenter| + presenter.id = ActivityPub::TagManager.instance.generate_uri_for(nil) + presenter.type = 'Create' + presenter.actor = ActivityPub::TagManager.instance.uri_for(encrypted_message.source_account) + presenter.published = Time.now.utc + presenter.to = ActivityPub::TagManager.instance.uri_for(encrypted_message.target_account) + presenter.virtual_object = encrypted_message + end + end + end +end |