class Rack::TimeEnforcement

Constants

VERSION

Public Class Methods

new(app) click to toggle source
# File lib/rack/time_enforcement.rb, line 6
def initialize(app)
  @app = app
end

Public Instance Methods

call(env) click to toggle source
# File lib/rack/time_enforcement.rb, line 10
def call(env)
  if time = time_extract(env)
    code, headers, body = Timecop.travel(time) { @app.call(env) }
    headers['Time-Enforcement-In'] = time.to_s
    headers['Time-Enforcement-Enabled'] = 'true'
  else
    code, headers, body = @app.call(env)
    if env['HTTP_TIME_ENFORCEMENT_AT']
      headers['Time-Enforcement-Enabled'] = 'false'
    end
  end


  headers['Time-Enforcement-Available'] = 'true'

  [code, headers, body]
end
time_extract(env) click to toggle source
# File lib/rack/time_enforcement.rb, line 28
def time_extract(env)
  if env['HTTP_TIME_ENFORCEMENT_AT']
    begin
      Time.parse env["HTTP_TIME_ENFORCEMENT_AT"]
    rescue
      nil
    end
  end
end