Class: CGIMethods
- Defined in:
- lib/action_controller/cgi_ext/cgi_methods.rb
Overview
Static methods for parsing the query and request parameters that can be used in a CGI extension class or testing in isolation.
Class Method Summary collapse
- .parse_formatted_request_parameters(format, raw_post_data) ⇒ Object
-
.parse_query_parameters(query_string) ⇒ Object
Returns a hash with the pairs from the query string.
-
.parse_request_parameters(params) ⇒ Object
Returns the request (POST/GET) parameters in a parsed form where pairs such as “customer[street]” / “Somewhere cool!” are translated into a full hash hierarchy, like { “customer” => { “address” => { “street” => “Somewhere cool!” } } }.
Class Method Details
.parse_formatted_request_parameters(format, raw_post_data) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/action_controller/cgi_ext/cgi_methods.rb', line 51 def self.parse_formatted_request_parameters(format, raw_post_data) case format when :xml return XmlSimple.xml_in(raw_post_data, 'ForceArray' => false) when :yaml return YAML.load(raw_post_data) end rescue Object => e { "exception" => "#{e.} (#{e.class})", "backtrace" => e.backtrace, "raw_post_data" => raw_post_data, "format" => format } end |
.parse_query_parameters(query_string) ⇒ Object
Returns a hash with the pairs from the query string. The implicit hash construction that is done in parse_request_params is not done here.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/action_controller/cgi_ext/cgi_methods.rb', line 10 def CGIMethods.parse_query_parameters(query_string) parsed_params = {} query_string.split(/[&;]/).each { |p| k, v = p.split('=',2) v = nil if (!v.nil? && v.empty?) k = CGI.unescape(k) unless k.nil? v = CGI.unescape(v) unless v.nil? keys = split_key(k) last_key = keys.pop last_key = keys.pop if (use_array = last_key.empty?) parent = keys.inject(parsed_params) {|h, k| h[k] ||= {}} if use_array then (parent[last_key] ||= []) << v else parent[last_key] = v end } return parsed_params end |
.parse_request_parameters(params) ⇒ Object
Returns the request (POST/GET) parameters in a parsed form where pairs such as “customer[street]” / “Somewhere cool!” are translated into a full hash hierarchy, like { “customer” => { “address” => { “street” => “Somewhere cool!” } } }
36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/action_controller/cgi_ext/cgi_methods.rb', line 36 def CGIMethods.parse_request_parameters(params) parsed_params = {} for key, value in params value = [value] if key =~ /.*\[\]$/ CGIMethods.build_deep_hash( CGIMethods.get_typed_value(value[0]), parsed_params, CGIMethods.get_levels(key) ) end return parsed_params end |