Class: Rack::ConditionalForms

Inherits:
Object
  • Object
show all
Defined in:
lib/rack/conditional-forms.rb,
lib/rack/conditional-forms/version.rb

Constant Summary collapse

IF_MATCH_PARAM_KEY =
'_if_match'.freeze
IF_UNMODIFIED_SINCE_KEY =
'_if_unmodified_since'.freeze
VERSION =
"0.0.2"

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ ConditionalForms

Returns a new instance of ConditionalForms.



10
11
12
# File 'lib/rack/conditional-forms.rb', line 10

def initialize(app)
  @app = app
end

Instance Method Details

#call(env) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/rack/conditional-forms.rb', line 14

def call(env)
  if (match = if_match(env)) && !match.empty?
    env['rack.conditionalforms.original_match'] = env['HTTP_IF_MATCH']
    env['HTTP_IF_MATCH'] = '"%s"' % if_match(env)
  end
  
  if (unmodified_since = if_unmodified_since(env)) && !unmodified_since.empty?
    env['rack.conditionalforms.original_unmodified_since'] = env['HTTP_IF_UNMODIFIED_SINCE']
    env['HTTP_IF_UNMODIFIED_SINCE'] = if_unmodified_since(env)
  end
  
  @app.call(env)
end

#if_match(env) ⇒ Object



28
29
30
# File 'lib/rack/conditional-forms.rb', line 28

def if_match(env)
  request_value(env, IF_MATCH_PARAM_KEY)
end

#if_unmodified_since(env) ⇒ Object



32
33
34
# File 'lib/rack/conditional-forms.rb', line 32

def if_unmodified_since(env)
  request_value(env, IF_UNMODIFIED_SINCE_KEY)
end

#request_value(env, key) ⇒ Object



36
37
38
39
40
41
42
# File 'lib/rack/conditional-forms.rb', line 36

def request_value(env, key)
  req = Request.new(env)
  value = req.POST[key]
  value.to_s.upcase
rescue EOFError
  ""
end