Class: RocketIO::Request
- Inherits:
-
Rack::Request
- Object
- Rack::Request
- RocketIO::Request
- 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
-
#accept ⇒ Object
Returns an array of acceptable media types for the response.
- #accept?(type) ⇒ Boolean
- #forwarded? ⇒ Boolean
- #idempotent? ⇒ Boolean
- #preferred_type(*types) ⇒ Object
- #safe? ⇒ Boolean
Instance Method Details
#accept ⇒ Object
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
43 44 45 |
# File 'lib/rocketio/controller/request.rb', line 43 def accept?(type) preferred_type(type).to_s.include?(type) end |
#forwarded? ⇒ Boolean
60 61 62 |
# File 'lib/rocketio/controller/request.rb', line 60 def forwarded? env.include?(HTTP_X_FORWARDED_HOST) end |
#idempotent? ⇒ 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
64 65 66 |
# File 'lib/rocketio/controller/request.rb', line 64 def safe? get? or head? or or trace? end |