Class: Cyberweb::REST::Request
- Inherits:
-
Rack::Request
- Object
- Rack::Request
- Cyberweb::REST::Request
- Defined in:
- lib/cyberweb/REST/base/request.rb
Overview
#
The request object. See Rack::Request for more info:
https://rubydoc.info/github/rack/rack/master/Rack/Request
#
Instance Method Summary collapse
-
#accept ⇒ Object
# === accept.
-
#accept?(type) ⇒ Boolean
# === accept? ========================================================================= #.
-
#forwarded? ⇒ Boolean
# === forwarded? ========================================================================= #.
-
#idempotent? ⇒ Boolean
# === idempotent? ========================================================================= #.
-
#initialize ⇒ Request
constructor
# === initialize ========================================================================= #.
-
#link? ⇒ Boolean
# === link? ========================================================================= #.
-
#params ⇒ Object
# === params ========================================================================= #.
-
#preferred_type(*types) ⇒ Object
# === preferred_type ========================================================================= #.
-
#safe? ⇒ Boolean
# === safe? ========================================================================= #.
-
#unlink? ⇒ Boolean
# === unlink? ========================================================================= #.
Constructor Details
#initialize ⇒ Request
#
initialize
#
48 49 |
# File 'lib/cyberweb/REST/base/request.rb', line 48 def initialize end |
Instance Method Details
#accept ⇒ Object
#
accept
This method will return an array of acceptable media types for the given response.
#
127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/cyberweb/REST/base/request.rb', line 127 def accept @env['rest.accept'] ||= if @env.include?('HTTP_ACCEPT') && (@env['HTTP_ACCEPT'].to_s != '') @env['HTTP_ACCEPT'] .to_s .scan(HEADER_VALUE_WITH_PARAMS) .map! { |e| AcceptEntry.new(e) } .sort else [AcceptEntry.new('*/*')] end end |
#accept?(type) ⇒ Boolean
#
accept?
#
103 104 105 |
# File 'lib/cyberweb/REST/base/request.rb', line 103 def accept?(type) preferred_type(type).to_s.include?(type) end |
#forwarded? ⇒ Boolean
#
forwarded?
#
67 68 69 |
# File 'lib/cyberweb/REST/base/request.rb', line 67 def forwarded? @env and @env.include?('HTTP_X_FORWARDED_HOST') end |
#idempotent? ⇒ Boolean
#
idempotent?
#
117 118 119 |
# File 'lib/cyberweb/REST/base/request.rb', line 117 def idempotent? safe? || put? || delete? || link? || unlink? end |
#link? ⇒ Boolean
#
link?
#
110 111 112 |
# File 'lib/cyberweb/REST/base/request.rb', line 110 def link? request_method == 'LINK' end |
#params ⇒ Object
#
params
#
54 55 56 57 58 59 60 61 62 |
# File 'lib/cyberweb/REST/base/request.rb', line 54 def params super rescue Rack::Utils::ParameterTypeError, Rack::Utils::InvalidParameterError => error raise BadRequest, "Invalid query parameters: #{Rack::Utils.escape_html(error.)}" rescue EOFError => error raise BadRequest, "Invalid multipart/form-data: #{Rack::Utils.escape_html(error.)}" end |
#preferred_type(*types) ⇒ Object
#
preferred_type
#
74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/cyberweb/REST/base/request.rb', line 74 def preferred_type(*types) return accept.first if types.empty? types.flatten! return types.first if accept.empty? accept.detect { |accept_header| type = types.detect { |entry| MimeTypeEntry.new(entry).accepts?(accept_header) } return type if type } end |
#safe? ⇒ Boolean
#
safe?
#
89 90 91 |
# File 'lib/cyberweb/REST/base/request.rb', line 89 def safe? get? || head? || || trace? end |
#unlink? ⇒ Boolean
#
unlink?
#
96 97 98 |
# File 'lib/cyberweb/REST/base/request.rb', line 96 def unlink? request_method == 'UNLINK' end |