A library for handling DID identifiers used in Bluesky AT Protocol

detect redirect loops

+9 -1
+9 -1
lib/didkit/requests.rb
··· 11 } 12 13 redirects = 0 14 max_redirects = options[:max_redirects] || 5 15 16 loop do 17 response = Net::HTTP.start(url.host, url.port, request_options) do |http| 18 request = Net::HTTP::Get.new(url) 19 http.request(request) ··· 21 22 if response.is_a?(Net::HTTPRedirection) && redirects < max_redirects && (location = response['Location']) 23 url = URI(location.include?('://') ? location : (url.origin + location)) 24 - redirects += 1 25 else 26 return response 27 end
··· 11 } 12 13 redirects = 0 14 + visited_urls = [] 15 max_redirects = options[:max_redirects] || 5 16 17 loop do 18 + visited_urls << url 19 + 20 response = Net::HTTP.start(url.host, url.port, request_options) do |http| 21 request = Net::HTTP::Get.new(url) 22 http.request(request) ··· 24 25 if response.is_a?(Net::HTTPRedirection) && redirects < max_redirects && (location = response['Location']) 26 url = URI(location.include?('://') ? location : (url.origin + location)) 27 + 28 + if visited_urls.include?(url) 29 + return response 30 + else 31 + redirects += 1 32 + end 33 else 34 return response 35 end