Class: Cyberweb::REST::Request

Inherits:
Rack::Request
  • Object
show all
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

Constructor Details

#initializeRequest

#

initialize

#


48
49
# File 'lib/cyberweb/REST/base/request.rb', line 48

def initialize
end

Instance Method Details

#acceptObject

#

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?

#

Returns:

  • (Boolean)


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?

#

Returns:

  • (Boolean)


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?

#

Returns:

  • (Boolean)


117
118
119
# File 'lib/cyberweb/REST/base/request.rb', line 117

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

#link?Boolean

#
#

Returns:

  • (Boolean)


110
111
112
# File 'lib/cyberweb/REST/base/request.rb', line 110

def link?
  request_method == 'LINK'
end

#paramsObject

#

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.message)}"
rescue EOFError => error
  raise BadRequest,
        "Invalid multipart/form-data: #{Rack::Utils.escape_html(error.message)}"
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?

#

Returns:

  • (Boolean)


89
90
91
# File 'lib/cyberweb/REST/base/request.rb', line 89

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

#unlink?Boolean

#
#

Returns:

  • (Boolean)


96
97
98
# File 'lib/cyberweb/REST/base/request.rb', line 96

def unlink?
  request_method == 'UNLINK'
end