0
0
Fork 0

Support Actors/Statuses with multiple types (#7305)

* Add equals_or_includes_any? helper in JsonLdHelper

* Support arrays in JSON-LD type fields for actors/tags/objects.

* Spec for resolving accounts with extension types

* Style tweaks for codeclimate
This commit is contained in:
Surinna Curtis 2018-05-02 05:40:24 -05:00 committed by Eugen Rochko
parent 86efccce2a
commit dc786c0cf4
12 changed files with 43 additions and 24 deletions

View file

@ -56,6 +56,6 @@ class ActivityPub::FetchRemoteAccountService < BaseService
end
def expected_type?
SUPPORTED_TYPES.include?(@json['type'])
equals_or_includes_any?(@json['type'], SUPPORTED_TYPES)
end
end

View file

@ -43,7 +43,7 @@ class ActivityPub::FetchRemoteKeyService < BaseService
end
def person?
ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES.include?(@json['type'])
equals_or_includes_any?(@json['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES)
end
def public_key?
@ -55,6 +55,6 @@ class ActivityPub::FetchRemoteKeyService < BaseService
end
def confirmed_owner?
ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES.include?(@owner['type']) && value_or_id(@owner['publicKey']) == @json['id']
equals_or_includes_any?(@owner['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) && value_or_id(@owner['publicKey']) == @json['id']
end
end

View file

@ -42,7 +42,7 @@ class ActivityPub::FetchRemoteStatusService < BaseService
end
def expected_type?
(ActivityPub::Activity::Create::SUPPORTED_TYPES + ActivityPub::Activity::Create::CONVERTED_TYPES).include? @json['type']
equals_or_includes_any?(@json['type'], ActivityPub::Activity::Create::SUPPORTED_TYPES + ActivityPub::Activity::Create::CONVERTED_TYPES)
end
def needs_update(actor)

View file

@ -201,10 +201,7 @@ class ActivityPub::ProcessAccountService < BaseService
return if @json['tag'].blank?
as_array(@json['tag']).each do |tag|
case tag['type']
when 'Emoji'
process_emoji tag
end
process_emoji tag if equals_or_includes?(tag['type'], 'Emoji')
end
end