class FaradayMiddleware::Caching

Caches all requests, not only GET requests.

Public Instance Methods

cache_key(env) click to toggle source
# File lib/pupa/refinements/faraday_middleware.rb, line 17
def cache_key(env)
  url = env[:url].dup
  if url.query && params_to_ignore.any?
    params = parse_query url.query
    params.reject! {|k,| params_to_ignore.include? k }
    url.query = params.any? ? build_query(params) : nil
  end
  url.normalize!
  url.scheme + '://' + url.host + url.request_uri + OpenSSL::Digest::MD5.hexdigest(env[:body].to_s) # XXX add for POST requests
end
call(env) click to toggle source
# File lib/pupa/refinements/faraday_middleware.rb, line 5
def call(env)
  # Remove if-statement to cache any request, not only GET.
  if env[:parallel_manager]
    # callback mode
    cache_on_complete(env)
  else
    # synchronous mode
    response = cache.fetch(cache_key(env)) { @app.call(env) }
    finalize_response(response, env)
  end
end