Allow ActivityPub Note's tag and attachment to be single objects (#5534)

signup-info-prompt
puckipedia 2017-10-27 16:10:36 +02:00 committed by Eugen Rochko
parent 0129f5eada
commit 0cb329f63a
2 changed files with 8 additions and 4 deletions

View File

@ -9,6 +9,10 @@ module JsonLdHelper
value.is_a?(Array) ? value.first : value value.is_a?(Array) ? value.first : value
end end
def as_array(value)
value.is_a?(Array) ? value : [value]
end
def value_or_id(value) def value_or_id(value)
value.is_a?(String) || value.nil? ? value : value['id'] value.is_a?(String) || value.nil? ? value : value['id']
end end

View File

@ -53,9 +53,9 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
end end
def process_tags(status) def process_tags(status)
return unless @object['tag'].is_a?(Array) return if @object['tag'].nil?
@object['tag'].each do |tag| as_array(@object['tag']).each do |tag|
case tag['type'] case tag['type']
when 'Hashtag' when 'Hashtag'
process_hashtag tag, status process_hashtag tag, status
@ -103,9 +103,9 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
end end
def process_attachments(status) def process_attachments(status)
return unless @object['attachment'].is_a?(Array) return if @object['attachment'].nil?
@object['attachment'].each do |attachment| as_array(@object['attachment']).each do |attachment|
next if unsupported_media_type?(attachment['mediaType']) || attachment['url'].blank? next if unsupported_media_type?(attachment['mediaType']) || attachment['url'].blank?
href = Addressable::URI.parse(attachment['url']).normalize.to_s href = Addressable::URI.parse(attachment['url']).normalize.to_s