Module: MusicBrainz::ClientModules::FailsafeProxy
- Included in:
- MusicBrainz::Client
- Defined in:
- lib/musicbrainz/client_modules/failsafe_proxy.rb
Instance Method Summary collapse
- #failsafe? ⇒ Boolean
- #get_contents(url) ⇒ Object
- #ready? ⇒ Boolean
- #time_passed ⇒ Object
- #time_to_wait ⇒ Object
- #wait_util_ready! ⇒ Object
Instance Method Details
#failsafe? ⇒ Boolean
34 35 36 |
# File 'lib/musicbrainz/client_modules/failsafe_proxy.rb', line 34 def failsafe? MusicBrainz.config.tries_limit > 1 && MusicBrainz.config.query_interval.to_f > 0 end |
#get_contents(url) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/musicbrainz/client_modules/failsafe_proxy.rb', line 4 def get_contents(url) return super unless failsafe? response = { body: nil, status: 500 } MusicBrainz.config.tries_limit.times do wait_util_ready! response = super break if response[:status] == 200 end response end |
#ready? ⇒ Boolean
25 26 27 |
# File 'lib/musicbrainz/client_modules/failsafe_proxy.rb', line 25 def ready? time_passed > MusicBrainz.config.query_interval end |
#time_passed ⇒ Object
17 18 19 |
# File 'lib/musicbrainz/client_modules/failsafe_proxy.rb', line 17 def time_passed Time.now.to_f - @last_query_time ||= 0.0 end |
#time_to_wait ⇒ Object
21 22 23 |
# File 'lib/musicbrainz/client_modules/failsafe_proxy.rb', line 21 def time_to_wait MusicBrainz.config.query_interval - time_passed end |
#wait_util_ready! ⇒ Object
29 30 31 32 |
# File 'lib/musicbrainz/client_modules/failsafe_proxy.rb', line 29 def wait_util_ready! sleep(time_to_wait) unless ready? @last_query_time = Time.now.to_f end |