Module: Angelo::ParamsParser
- Included in:
- Base
- Defined in:
- lib/angelo/params_parser.rb
Constant Summary collapse
- EMPTY_JSON =
'{}'
Instance Method Summary collapse
- #content_type?(type) ⇒ Boolean
- #form_encoded? ⇒ Boolean
- #json? ⇒ Boolean
- #parse_formencoded(str) ⇒ Object
- #parse_post_body ⇒ Object
- #parse_query_string ⇒ Object
- #parse_query_string_and_post_body ⇒ Object
Instance Method Details
#content_type?(type) ⇒ Boolean
56 57 58 59 60 61 62 |
# File 'lib/angelo/params_parser.rb', line 56 def content_type? type if request.headers[CONTENT_TYPE_HEADER_KEY] request.headers[CONTENT_TYPE_HEADER_KEY].split(SEMICOLON).include? type else nil end end |
#form_encoded? ⇒ Boolean
48 49 50 |
# File 'lib/angelo/params_parser.rb', line 48 def form_encoded? content_type? FORM_TYPE end |
#json? ⇒ Boolean
52 53 54 |
# File 'lib/angelo/params_parser.rb', line 52 def json? content_type? JSON_TYPE end |
#parse_formencoded(str) ⇒ Object
11 12 13 14 15 16 17 |
# File 'lib/angelo/params_parser.rb', line 11 def parse_formencoded str str.split(AMPERSAND).reduce(SymHash.new) do |p, kv| key, value = kv.split(EQUALS).map {|s| CGI.unescape s} p[key] = value p end end |
#parse_post_body ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/angelo/params_parser.rb', line 23 def parse_post_body body = request_body rescue request.body.to_s case when form_encoded? parse_formencoded body when json? && !body.empty? parsed_body = JSON.parse body parsed_body = SymHash.new parsed_body if Hash === parsed_body parsed_body else {} end end |
#parse_query_string ⇒ Object
19 20 21 |
# File 'lib/angelo/params_parser.rb', line 19 def parse_query_string parse_formencoded(request.query_string || EMPTY_STRING) end |
#parse_query_string_and_post_body ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/angelo/params_parser.rb', line 37 def parse_query_string_and_post_body parsed_body = parse_post_body case parsed_body when Hash parse_query_string.merge! parse_post_body when Array self.request_body = parsed_body parse_query_string end end |