Sha256: da2386f36e6d882e671ede2d0ebc1ee170d643158254f3c1978c55cf0bc513b6

Contents?: true

Size: 854 Bytes

Versions: 1

Compression:

Stored size: 854 Bytes

Contents

module MusicBrainz
  module ClientModules
    module FailsafeProxy
      def get_contents(url)
        return super unless failsafe?

        response = { body: nil, status: 500 }
        MusicBrainz.config.tries_limit.times do
          response = super
          break if response[:status] == 200
        end

        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
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
musicbrainz-0.7.2 lib/musicbrainz/client_modules/failsafe_proxy.rb