Class: Escher::Request::LegacyRequest
- Inherits:
-
Object
- Object
- Escher::Request::LegacyRequest
- Defined in:
- lib/escher/request/legacy_request.rb
Constant Summary collapse
- URIREGEX =
based on the example in RFC 3986, but scheme, user, password, host, port and fraement support removed, only path and query left
/^([^?#]*)(\?(.*))?$/
Instance Method Summary collapse
-
#body ⇒ Object
TODO: create a test for empty body (= nil).
- #has_header?(key) ⇒ Boolean
- #headers ⇒ Object
- #host ⇒ Object
-
#initialize(request) ⇒ LegacyRequest
constructor
A new instance of LegacyRequest.
- #method ⇒ Object
- #path ⇒ Object
- #prepare_request_headers ⇒ Object
- #prepare_request_uri ⇒ Object
- #query_values ⇒ Object
- #request ⇒ Object
- #set_header(key, value) ⇒ Object
Constructor Details
#initialize(request) ⇒ LegacyRequest
Returns a new instance of LegacyRequest.
11 12 13 14 15 |
# File 'lib/escher/request/legacy_request.rb', line 11 def initialize(request) @request = request prepare_request_uri prepare_request_headers end |
Instance Method Details
#body ⇒ Object
TODO: create a test for empty body (= nil)
114 115 116 117 118 119 120 121 |
# File 'lib/escher/request/legacy_request.rb', line 114 def body case @request.class.to_s when 'Hash' @request[:body] || '' else @request.body || '' end end |
#has_header?(key) ⇒ Boolean
91 92 93 94 95 96 97 98 |
# File 'lib/escher/request/legacy_request.rb', line 91 def has_header?(key) @request_headers.each { |header| if header[0].downcase == key.downcase return true end } return false end |
#headers ⇒ Object
64 65 66 |
# File 'lib/escher/request/legacy_request.rb', line 64 def headers @request_headers end |
#host ⇒ Object
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/escher/request/legacy_request.rb', line 125 def host @request_headers.each { |header| if header[0].downcase == key.downcase return header[1] end } case @request.class.to_s when 'Hash' @request[:host] else begin @request.host rescue "" end end end |
#method ⇒ Object
102 103 104 105 106 107 108 109 |
# File 'lib/escher/request/legacy_request.rb', line 102 def method case @request.class.to_s when 'Hash' @request[:method] else @request.request_method end end |
#path ⇒ Object
145 146 147 |
# File 'lib/escher/request/legacy_request.rb', line 145 def path @request_uri.path end |
#prepare_request_headers ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/escher/request/legacy_request.rb', line 36 def prepare_request_headers @request_headers = [] case @request.class.to_s when 'Hash' @request_headers = @request[:headers] when 'Sinatra::Request' # TODO: not working yet @request.env.each { |key, value| if key.downcase[0, 5] == "http_" @request_headers += [[key[5..-1].gsub("_", "-"), value]] end } when 'WEBrick::HTTPRequest' @request.header.each { |key, values| values.each { |value| @request_headers += [[key, value]] } } end end |
#prepare_request_uri ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/escher/request/legacy_request.rb', line 19 def prepare_request_uri case @request.class.to_s when 'Hash' uri = @request[:uri] else uri = @request.uri end fragments = uri.scan(URIREGEX)[0] @request_uri = Addressable::URI.new({ :path => fragments[0], :query => fragments[2], }) raise "Invalid request URI: #{@request_uri}" unless @request_uri end |
#query_values ⇒ Object
151 152 153 |
# File 'lib/escher/request/legacy_request.rb', line 151 def query_values @request_uri.query_values(Array) || [] end |
#request ⇒ Object
58 59 60 |
# File 'lib/escher/request/legacy_request.rb', line 58 def request @request end |
#set_header(key, value) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/escher/request/legacy_request.rb', line 70 def set_header(key, value) found = false @request_headers.each { |header| if not found and header[0].downcase == key.downcase header[1] = value found = true end } unless found @request_headers += [[key, value]] end case @request.class.to_s when 'Hash' @request[:headers] = @request_headers else @request[key] = value end end |