class Downgrade::Middleware

Public Class Methods

new(app) click to toggle source
# File lib/downgrade/middleware.rb, line 4
def initialize(app)
  @app = app
end

Public Instance Methods

call(env) click to toggle source
# File lib/downgrade/middleware.rb, line 8
def call(env)
  if Downgrade.middleware_switch.is_on?
    middleware_cache(env)
  elsif Downgrade.path_switch.is_on?
    path_cache(env)
  else
    @app.call(env)
  end
end
middleware_cache(env) click to toggle source
# File lib/downgrade/middleware.rb, line 18
def middleware_cache(env)
  req = Rack::Request.new(env)
  if req.get?
    Downgrade.cache_store.fetch(request_cache_key(req), expires_in: 10.minutes) do
      status, headers, rackbody = @app.call(env)
      [status, headers, [rackbody.body]]
    end
  else
    @app.call(env)
  end
end
path_cache(env) click to toggle source
# File lib/downgrade/middleware.rb, line 30
def path_cache(env)
  req = Rack::Request.new(env)
  if req.get?
    if Downgrade::Path.hit_regexp?(req.path)
      Downgrade.cache_store.fetch(request_cache_key(req), expires_in: 10.minutes) do
        status, headers, rackbody = @app.call(env)
        [status, headers, [rackbody.body]]
      end
    else
      @app.call(env)
    end
  else
    @app.call(env)
  end
end
request_cache_key(req) click to toggle source
# File lib/downgrade/middleware.rb, line 46
def request_cache_key(req)
  "downgrade:middleware:#{req.path}:#{req['HTTP_AUTHORIZATION']}"
end