From 9b4eec8a71294531c72c9a68eb1d6c32ee363bc5 Mon Sep 17 00:00:00 2001 From: chiu Date: Wed, 15 Apr 2020 18:35:22 +0800 Subject: [PATCH] let rake can redirect to the url when response is 301 --- lib/tasks/feeds_tasks.rake | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/lib/tasks/feeds_tasks.rake b/lib/tasks/feeds_tasks.rake index 23c128f..ea82e30 100644 --- a/lib/tasks/feeds_tasks.rake +++ b/lib/tasks/feeds_tasks.rake @@ -7,12 +7,26 @@ namespace :feeds_module do feed_directory = File.join(main_directory.to_s, site_feed.id.to_s) FileUtils.mkdir_p(feed_directory) if !File.exists?(feed_directory) uri = URI(site_feed.feed_url) - res = Net::HTTP.start(uri.host, uri.port,:use_ssl => uri.scheme == 'https',open_timeout: 60,read_timeout: 60) do |http| + res_net = Net::HTTP.start(uri.host, uri.port,:use_ssl => uri.scheme == 'https',open_timeout: 60,read_timeout: 60) do |http| req = Net::HTTP::Get.new(uri) - http.request(req).body rescue '' + http.request(req) end + if (res_net.code == '301' return true) + begin + uri = URI(res_net['location']) + res_net = Net::HTTP.start(uri.host, uri.port,:use_ssl => uri.scheme == 'https',open_timeout: 60,read_timeout: 60) do |http| + req = Net::HTTP::Get.new(uri) + http.request(req) + end + rescue => e + res_net = '' + puts e + puts e.backtrace + end + end + res = res_net.body rescue '' File.open(File.join(feed_directory.to_s,site_feed.feed_uid + ".json"),"w") do |file| - res.force_encoding("utf-8") + res = res.force_encoding("utf-8") rescue '' file.write(res) end site_feed.save