Retry news fetch 5 times before giving up

This commit is contained in:
Nemo 2023-12-12 14:06:06 +05:30
parent de06ec3b32
commit e72862c80d
1 changed files with 20 additions and 3 deletions

View File

@ -41,15 +41,32 @@ class BeatrootNews < Jekyll::Generator
data
end
def make_request(url, retries=5)
uri = URI.parse(url)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.read_timeout = 10
http.open_timeout = 10
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
if response.code == "200"
return response.body
elsif retries > 0
Jekyll.logger.warn "News:", "Retrying #{url} (#{retries} retries left)"
return make_request(url, retries - 1)
else
Jekyll.logger.error "News:", "Failed to fetch #{url}"
raise "Failed to fetch news after 5 attempts"
end
end
def get_content
unless Jekyll.env == 'production'
body = File.read '_development/fixture.json'
else
uri = URI.parse(SOURCE_URL)
body = Net::HTTP.get_response(uri).body
body = make_request(SOURCE_URL, 5)
end
data = JSON.parse(body)['data']
data = fix_dates_for_dev(data) unless Jekyll.env == 'production'
data
end