Sha256: 5d10fa5381f32bbc25e845c0906ec6d63d450d6a6e04c358fd3bc8026aa614eb
Contents?: true
Size: 1.08 KB
Versions: 8
Compression:
Stored size: 1.08 KB
Contents
module Barometer class Base attr_reader :weather def initialize(query, units=:metric) @query = Query.new(query, units) @weather = Weather.new(units) end def measure record_time do measure_until_successful or raise OutOfSources end weather end private attr_reader :query def record_time weather.start_at = Time.now.utc yield weather.end_at = Time.now.utc end def measure_until_successful Utils::ConfigReader.take_level_while do |level| measure_using_all_services_in_level(level) measure_with_next_level? end success? end def measure_using_all_services_in_level(level) Utils::ConfigReader.services(level) do |source, config| measure_and_record(source, config) end end def measure_and_record(source, config) weather.responses << WeatherService.new(source, config[:version]).measure(query, config) end def success? weather.success? end def measure_with_next_level? !success? end end end
Version data entries
8 entries across 8 versions & 1 rubygems