Class: Escher::Request::HashRequest

Inherits:
Base
  • Object
show all
Defined in:
lib/escher/request/hash_request.rb

Constant Summary collapse

URI_REGEXP =

Based on the example in RFC 3986, but scheme, user, password, host, port and fragment support removed, only path and query left

/^([^?#]*)(\?(.*))?$/

Instance Attribute Summary

Attributes inherited from Base

#request

Instance Method Summary collapse

Methods inherited from Base

#has_header?, #header

Constructor Details

#initialize(request) ⇒ HashRequest

Returns a new instance of HashRequest.



11
12
13
# File 'lib/escher/request/hash_request.rb', line 11

def initialize(request)
  super request
end

Instance Method Details

#bodyObject



36
37
38
# File 'lib/escher/request/hash_request.rb', line 36

def body
  request[:body] or ''
end

#headersObject



17
18
19
# File 'lib/escher/request/hash_request.rb', line 17

def headers
  request[:headers].map { |(header_name, value)| [header_name.gsub('_', '-'), value] }
end

#methodObject



30
31
32
# File 'lib/escher/request/hash_request.rb', line 30

def method
  request[:method]
end

#pathObject



42
43
44
# File 'lib/escher/request/hash_request.rb', line 42

def path
  request[:uri].match(URI_REGEXP)[1]
end

#query_valuesObject



48
49
50
51
# File 'lib/escher/request/hash_request.rb', line 48

def query_values
  query = request[:uri].match(URI_REGEXP)[3]
  (Addressable::URI.new query: query).query_values(Array) or []
end

#set_header(name, value) ⇒ Object



23
24
25
26
# File 'lib/escher/request/hash_request.rb', line 23

def set_header(name, value)
  request[:headers] ||= []
  request[:headers] << [name, value] unless has_header? name
end