Module: Angelo::ParamsParser
- Included in:
- Base
- Defined in:
- lib/angelo/params_parser.rb
Constant Summary collapse
- EMPTY_JSON =
'{}'
- SEMICOLON =
';'
- EQUALS =
'='
- AMPERSAND =
'&'
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
Instance Method Details
#content_type?(type) ⇒ Boolean
51 52 53 54 55 56 57 |
# File 'lib/angelo/params_parser.rb', line 51 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
43 44 45 |
# File 'lib/angelo/params_parser.rb', line 43 def form_encoded? content_type? FORM_TYPE end |
#json? ⇒ Boolean
47 48 49 |
# File 'lib/angelo/params_parser.rb', line 47 def json? content_type? JSON_TYPE end |
#parse_formencoded(str) ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/angelo/params_parser.rb', line 14 def parse_formencoded str raise FormEncodingError unless str.empty? or str.index EQUALS str.split(AMPERSAND).reduce(Responder.symhash) do |p, kv| key, value = kv.split(EQUALS).map {|s| CGI.unescape s} p[key] = value p end end |
#parse_post_body ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/angelo/params_parser.rb', line 27 def parse_post_body body = request.body.to_s qs = parse_query_string case when form_encoded? body = parse_formencoded body qs.merge! body when json? body = EMPTY_JSON if body.empty? body = JSON.parse body qs.merge! body else qs end end |
#parse_query_string ⇒ Object
23 24 25 |
# File 'lib/angelo/params_parser.rb', line 23 def parse_query_string parse_formencoded(request.query_string || '') end |