module GoodData::Rest::Aggregator
class is responsible for storage and aggregation of REST calls information
Attributes
Public Instance Methods
Source
# File lib/gooddata/rest/rest_aggregator.rb, line 15 def clear_store @store.clear end
Source
# File lib/gooddata/rest/rest_aggregator.rb, line 11 def initialize_store @store = {} end
Source
# File lib/gooddata/rest/rest_aggregator.rb, line 19 def update_store(domain, method, duration, endpoint) domain = domain.to_sym method = method.to_sym endpoint = endpoint.to_sym @store[domain] = {} unless @store.key?(domain) @store[domain][method] = {} unless @store[domain].key?(method) if @store[domain][method].key?(endpoint) record = @store[domain][method][endpoint] record[:min] = [duration, record[:min]].min record[:max] = [duration, record[:max]].max record[:avg] = (record[:avg] * record[:count] + duration).to_f / (record[:count] + 1) record[:count] += 1 @store[domain][method][endpoint] = record else @store[domain][method][endpoint] = { :min => duration, :max => duration, :avg => duration, :count => 1, :method => method.to_s, :endpoint => endpoint.to_s, :domain => domain.to_s } end end