Class: FaradayMiddleware::Caching

Inherits:
Object
  • Object
show all
Defined in:
lib/pupa/refinements/faraday_middleware.rb

Overview

Caches all requests, not only GET requests.

Instance Method Summary collapse

Instance Method Details

#cache_key(env) ⇒ Object



17
18
19
20
21
22
23
24
25
26
# 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) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
# 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