class Merb::Rack::ConditionalGet

Public Instance Methods

call(env) click to toggle source

:api: plugin

# File lib/merb-core/rack/middleware/conditional_get.rb, line 7
def call(env)
  status, headers, body = @app.call(env)

  if document_not_modified?(env, headers)
    status = 304
    body = Merb::Const::EMPTY_STRING
    # set Date header using RFC1123 date format as specified by HTTP
    # RFC2616 section 3.3.1.
  end
  
  [status, headers, body]
end

Private Instance Methods

document_not_modified?(env, headers) click to toggle source

:api: private

# File lib/merb-core/rack/middleware/conditional_get.rb, line 22
def document_not_modified?(env, headers)
  if etag = headers[Merb::Const::ETAG]
    etag == env[Merb::Const::HTTP_IF_NONE_MATCH]
  elsif last_modified = headers[Merb::Const::LAST_MODIFIED]
    last_modified == env[Merb::Const::HTTP_IF_MODIFIED_SINCE]
  end
end