1
0
Fork 0
musicbrainz/lib/musicbrainz/client_modules/failsafe_proxy.rb

41 lines
908 B
Ruby
Raw Normal View History

# -*- encoding : utf-8 -*-
2012-10-12 12:45:51 +00:00
module MusicBrainz
module ClientModules
module FailsafeProxy
def get_contents(url)
2013-01-20 12:36:52 +00:00
return super unless failsafe?
2012-10-12 12:45:51 +00:00
2013-01-20 12:36:52 +00:00
response = { body: nil, status: 500 }
2012-10-12 12:45:51 +00:00
MusicBrainz.config.tries_limit.times do
2013-01-20 14:18:55 +00:00
wait_util_ready!
2012-10-12 12:45:51 +00:00
response = super
2013-01-20 12:36:52 +00:00
break if response[:status] == 200
2012-10-12 12:45:51 +00:00
end
2013-01-20 12:36:52 +00:00
response
end
def time_passed
Time.now.to_f - @last_query_time ||= 0.0
end
def time_to_wait
MusicBrainz.config.query_interval - time_passed
end
def ready?
time_passed > MusicBrainz.config.query_interval
end
def wait_util_ready!
sleep(time_to_wait) unless ready?
@last_query_time = Time.now.to_f
end
def failsafe?
MusicBrainz.config.tries_limit > 1 && MusicBrainz.config.query_interval.to_f > 0
2012-10-12 12:45:51 +00:00
end
end
end
end