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

Instance Method Details

#content_type?(type) ⇒ Boolean

Returns:

  • (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

Returns:

  • (Boolean)


43
44
45
# File 'lib/angelo/params_parser.rb', line 43

def form_encoded?
  content_type? FORM_TYPE
end

#json?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/angelo/params_parser.rb', line 47

def json?
  content_type? JSON_TYPE
end

#parse_formencoded(str) ⇒ Object

Raises:



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_bodyObject



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_stringObject



23
24
25
# File 'lib/angelo/params_parser.rb', line 23

def parse_query_string
  parse_formencoded(request.query_string || '')
end