class Feefo::ReviewFetcher

Attributes

feefo_config[R]
filters[R]

Public Class Methods

new(filters, feefo_config = Feefo.config, cache = Rails.cache) click to toggle source
# File lib/feefo/review_fetcher.rb, line 5
def initialize(filters, feefo_config = Feefo.config, cache = Rails.cache)
  @filters      = filters
  @feefo_config = feefo_config
  @cache        = cache
end

Public Instance Methods

fetch_reviews_json() click to toggle source
# File lib/feefo/review_fetcher.rb, line 11
def fetch_reviews_json
  with_caching do
    RemoteReviewFetcher.new(filters, feefo_config).fetch_reviews
  end
end

Private Instance Methods

cache() click to toggle source
# File lib/feefo/review_fetcher.rb, line 35
def cache
  @cache
end
feefo_key(filters) click to toggle source
# File lib/feefo/review_fetcher.rb, line 31
def feefo_key(filters)
  "feefo_reviews_for_#{filters[:code]}_#{filters[:category]}"
end
fetch_from_cache() click to toggle source
# File lib/feefo/review_fetcher.rb, line 23
def fetch_from_cache
  cache.read feefo_key(filters)
end
store_in_cache(reviews) click to toggle source
# File lib/feefo/review_fetcher.rb, line 27
def store_in_cache(reviews)
  cache.write feefo_key(filters), reviews, expires_in: feefo_config[:time_to_cache_reviews]
end
with_caching() { || ... } click to toggle source
# File lib/feefo/review_fetcher.rb, line 19
def with_caching
  fetch_from_cache || yield.tap { |reviews| store_in_cache(reviews) }
end