module BetfairApiNgRails::Api::ConnectionExt::Caching

Public Class Methods

included(base) click to toggle source
# File lib/betfair_api_ng_rails/api/connection_ext/caching.rb, line 9
        def self.included(base)
          base.send :class_eval,  <<-CODE
            def request_with_caching(method, params = {})
              if is_caching_on?
                BetfairApiNgRails.log.write("Cache is on! Trying to process with cache...")
                process_with_caching method, params
              else
                BetfairApiNgRails.log.write("Cache is off!")
                return request_without_caching(method, params)
              end
            end
            alias_method :request_without_caching, :request
            alias_method :request, :request_with_caching
          CODE
        end

Private Instance Methods

is_caching_on?() click to toggle source
# File lib/betfair_api_ng_rails/api/connection_ext/caching.rb, line 27
def is_caching_on?
  BetfairApiNgRails.config.use_cache
end
make_real_request(method, params, cache_service) click to toggle source
# File lib/betfair_api_ng_rails/api/connection_ext/caching.rb, line 42
def make_real_request(method, params, cache_service)
  res = request_without_caching(method, params)
  if need_caching?(res)
    cache_service.cache!(res.result)
    BetfairApiNgRails.log.write("     Result was cached!")
  else
    BetfairApiNgRails.log.write("     There are some problems 0_o... No any response cached...")
  end
  res
end
need_caching?(res) click to toggle source
# File lib/betfair_api_ng_rails/api/connection_ext/caching.rb, line 53
def need_caching?(res)
  !(res.nil? || res.has_error?)
end
process_with_caching(method, params) click to toggle source
# File lib/betfair_api_ng_rails/api/connection_ext/caching.rb, line 31
def process_with_caching(method, params)
  cache_service = Api::Caching::ResponseCache.new(method, hashing(params))
  if cache_service.is_cached?
    BetfairApiNgRails.log.write("   Finded cached record!")
    return cache_service.responser
  else
    BetfairApiNgRails.log.write("   Cached record not found!")
    return make_real_request(method, params, cache_service)
  end
end