Class: RocketIO::Request

Inherits:
Rack::Request
  • Object
show all
Defined in:
lib/rocketio/controller/request.rb

Defined Under Namespace

Classes: AcceptEntry

Constant Summary collapse

HEADER_PARAM =
/\s*[\w.]+=(?:[\w.]+|"(?:[^"\\]|\\.)*")?\s*/
HEADER_VALUE_WITH_PARAMS =
/(?:(?:\w+|\*)\/(?:\w+(?:\.|\-|\+)?|\*)*)\s*(?:;#{HEADER_PARAM})*/

Instance Method Summary collapse

Instance Method Details

#acceptObject

Returns an array of acceptable media types for the response



33
34
35
36
37
38
39
40
41
# File 'lib/rocketio/controller/request.rb', line 33

def accept
  @__accept__ ||= begin
    if env.include?(HTTP_ACCEPT) and !(accept = env[HTTP_ACCEPT].to_s).empty?
      accept.scan(HEADER_VALUE_WITH_PARAMS).map! {|e| AcceptEntry.new(e)}.sort
    else
      [AcceptEntry.new('*/*')]
    end
  end
end

#accept?(type) ⇒ Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/rocketio/controller/request.rb', line 43

def accept?(type)
  preferred_type(type).to_s.include?(type)
end

#forwarded?Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/rocketio/controller/request.rb', line 60

def forwarded?
  env.include?(HTTP_X_FORWARDED_HOST)
end

#idempotent?Boolean

Returns:

  • (Boolean)


68
69
70
# File 'lib/rocketio/controller/request.rb', line 68

def idempotent?
  safe? or put? or delete? or link? or unlink?
end

#preferred_type(*types) ⇒ Object



47
48
49
50
51
52
53
54
55
56
# File 'lib/rocketio/controller/request.rb', line 47

def preferred_type(*types)
  accepts = accept # just evaluate once
  return accepts.first if types.empty?
  types.flatten!
  return types.first if accepts.empty?
  accepts.detect do |pattern|
    type = types.detect { |t| File.fnmatch(pattern, t) }
    return type if type
  end
end

#safe?Boolean

Returns:

  • (Boolean)


64
65
66
# File 'lib/rocketio/controller/request.rb', line 64

def safe?
  get? or head? or options? or trace?
end