Class: FaradayMiddleware::Caching
- Inherits:
-
Object
- Object
- FaradayMiddleware::Caching
- 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 |