Module: Rho::RhoSupport
- Defined in:
- lib/rho/rhosupport.rb
Defined Under Namespace
Classes: UrlEncodedPairParser
Constant Summary
collapse
- ESCAPED =
/%([0-9a-fA-F]{2})/
Class Method Summary
collapse
Class Method Details
._unescape(str, regex) ⇒ Object
12
|
# File 'lib/rho/rhosupport.rb', line 12
def _unescape(str, regex) str.gsub(regex){ $1.hex.chr } end
|
.parse_query_parameters(query_string) ⇒ Object
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/rho/rhosupport.rb', line 20
def parse_query_parameters(query_string)
return {} if query_string.nil?
pairs = query_string.split('&').collect do |chunk|
next if chunk.empty?
key, value = chunk.split('=', 2)
next if key.empty?
value = value.nil? ? nil : unescape_form(value)
[ unescape_form(key), value ]
end.compact
UrlEncodedPairParser.new(pairs).result
end
|
.query_params(req) ⇒ Object
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
# File 'lib/rho/rhosupport.rb', line 34
def query_params(req)
params = {}
unless req['id'].nil?
params['id'] = req['id']
end
unless req['request-query'].nil? or req['request-query'].length == 0
params.merge!(parse_query_parameters(req['request-query']))
end
unless req['headers'].nil? or req['headers']['Content-Type'].nil?
if 'application/x-www-form-urlencoded'.eql? req['headers']['Content-Type']
params.merge!(parse_query_parameters(req['request-body']))
end
end
puts "Params: " + params.to_s unless params.empty?
params
end
|
16
17
18
|
# File 'lib/rho/rhosupport.rb', line 16
def unescape_form(str)
_unescape(str.gsub(/\+/, " "), ESCAPED)
end
|
.url_encode(s) ⇒ Object
6
7
8
9
10
|
# File 'lib/rho/rhosupport.rb', line 6
def url_encode(s)
s.to_s.dup.force_encoding("ASCII-8BIT").gsub(/[^a-zA-Z0-9_\-.]/n) {
sprintf("%%%02X", $&.unpack("C")[0])
}
end
|