Sha256: 75033a6d4ed6ec1ba8ff82dd5399fc4ce463203096965dd2a28ad6a702e6c633
Contents?: true
Size: 1.24 KB
Versions: 8
Compression:
Stored size: 1.24 KB
Contents
module Barometer module WeatherService class Base def initialize(source, version=nil) @source = source @service = WeatherService.source(@source, version) end def measure(query, options={}) @response = Barometer::Response.new record_time do measure_and_record_status(query, options) end @response.weight = options.fetch(:weight, nil) @response.source = @source @response end private def measure_and_record_status(query, options) capture_status_code do @response = @service.call(query, options) end end def capture_status_code yield @response.status_code = @response.complete? ? 200 : 204 rescue KeyRequired @response.status_code = 401 rescue Query::ConversionNotPossible @response.status_code = 406 rescue Query::UnsupportedRegion @response.status_code = 406 rescue Timeout::Error @response.status_code = 408 end def record_time response_started_at = Time.now.utc yield @response.response_started_at = response_started_at @response.response_ended_at = Time.now.utc end end end end
Version data entries
8 entries across 8 versions & 1 rubygems