Merge remote-tracking branch 'tootsuite/master' into glitchsoc/master

This commit is contained in:
Jenkins
2018-01-03 20:17:13 +00:00
66 changed files with 679 additions and 262 deletions
+10 -7
View File
@@ -2,16 +2,18 @@
class ActivityPub::Activity::Accept < ActivityPub::Activity
def perform
case @object['type']
when 'Follow'
accept_follow
if @object.respond_to?(:[]) &&
@object['type'] == 'Follow' && @object['actor'].present?
accept_follow_from @object['actor']
else
accept_follow_object @object
end
end
private
def accept_follow
target_account = account_from_uri(target_uri)
def accept_follow_from(actor)
target_account = account_from_uri(value_or_id(actor))
return if target_account.nil? || !target_account.local?
@@ -19,7 +21,8 @@ class ActivityPub::Activity::Accept < ActivityPub::Activity
follow_request&.authorize!
end
def target_uri
@target_uri ||= value_or_id(@object['actor'])
def accept_follow_object(object)
follow_request = ActivityPub::TagManager.instance.uri_to_resource(value_or_id(object), FollowRequest)
follow_request&.authorize!
end
end
+8
View File
@@ -28,6 +28,8 @@ class ActivityPub::TagManager
return target.uri if target.respond_to?(:local?) && !target.local?
case target.object_type
when :follow
account_follow_url(target.account.username, target)
when :person
account_url(target)
when :note, :comment, :activity
@@ -97,6 +99,12 @@ class ActivityPub::TagManager
case klass.name
when 'Account'
klass.find_local(uri_to_local_id(uri, :username))
when 'FollowRequest'
params = Rails.application.routes.recognize_path(uri)
klass.joins(:account).find_by!(
accounts: { domain: nil, username: params[:account_username] },
id: params[:id]
)
else
StatusFinder.new(uri).status
end
+3 -3
View File
@@ -171,10 +171,10 @@ class Formatter
end
def link_to_url(entity)
normalized_url = Addressable::URI.parse(entity[:url]).normalize
html_attrs = { target: '_blank', rel: 'nofollow noopener' }
url = Addressable::URI.parse(entity[:url])
html_attrs = { target: '_blank', rel: 'nofollow noopener' }
Twitter::Autolink.send(:link_to_text, entity, link_html(entity[:url]), normalized_url, html_attrs)
Twitter::Autolink.send(:link_to_text, entity, link_html(entity[:url]), url, html_attrs)
rescue Addressable::URI::InvalidURIError, IDN::Idna::IdnaError
encode(entity[:url])
end