Skip to content

Commit

Permalink
Fix #4067 - Do not make HTTP round-trip when resolving local URL (#4160)
Browse files Browse the repository at this point in the history
  • Loading branch information
Gargron committed Jul 11, 2017
1 parent b21ab49 commit 1764c32
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions app/services/fetch_remote_resource_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ class FetchRemoteResourceService < BaseService

def call(url)
@url = url

return process_local_url if local_url?

process_url unless fetched_atom_feed.nil?
end

Expand Down Expand Up @@ -38,4 +41,29 @@ def xml_root
def xml_data
@_xml_data ||= Nokogiri::XML(body, nil, 'utf-8')
end

def local_url?
TagManager.instance.local_url?(@url)
end

def process_local_url
recognized_params = Rails.application.routes.recognize_path(@url)

return unless recognized_params[:action] == 'show'

if recognized_params[:controller] == 'stream_entries'
status = StreamEntry.find_by(id: recognized_params[:id])&.status
check_local_status(status)
elsif recognized_params[:controller] == 'statuses'
status = Status.find_by(id: recognized_params[:id])
check_local_status(status)
elsif recognized_params[:controller] == 'accounts'
Account.find_local(recognized_params[:username])
end
end

def check_local_status(status)
return if status.nil?
status if status.public_visibility? || status.unlisted_visibility?
end
end

0 comments on commit 1764c32

Please sign in to comment.