Module: BitBucket::Utils::Url
- Included in:
- Request::OAuth
- Defined in:
- lib/bitbucket_rest_api/utils/url.rb
Constant Summary collapse
- DEFAULT_QUERY_SEP =
/[&;] */n.freeze
- KEY_VALUE_SEP =
'='
Class Method Summary collapse
- .build_query(params) ⇒ Object
- .escape(s) ⇒ Object
- .parse_query(query_string) ⇒ Object
- .parse_query_for_param(query_string, name) ⇒ Object
- .unescape(s) ⇒ Object
Class Method Details
.build_query(params) ⇒ Object
21 22 23 24 25 26 27 28 29 |
# File 'lib/bitbucket_rest_api/utils/url.rb', line 21 def build_query(params) params.map do |k, v| if v.class == Array build_query(v.map { |x| [k, x] }) else v.nil? ? escape(k) : "#{escape(k)}=#{escape(v)}" end end.join('&') end |
.escape(s) ⇒ Object
13 14 15 |
# File 'lib/bitbucket_rest_api/utils/url.rb', line 13 def escape(s) CGI.escape s.to_s end |
.parse_query(query_string) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/bitbucket_rest_api/utils/url.rb', line 31 def parse_query(query_string) return '' if query_string.nil? || query_string.empty? params = {} query_string.split(DEFAULT_QUERY_SEP).each do |part| k, v = part.split(KEY_VALUE_SEP, 2).map { |el| unescape(el) } if cur = params[k] if cur.class == Array params[k] << v else params[k] = [cur, v] end else params[k] = v end end params end |
.parse_query_for_param(query_string, name) ⇒ Object
52 53 54 55 56 57 58 |
# File 'lib/bitbucket_rest_api/utils/url.rb', line 52 def parse_query_for_param(query_string, name) parse_query(query_string).each do |key, val| return val.first if (name == key) && val.is_a?(Array) return val if name == key end nil end |
.unescape(s) ⇒ Object
17 18 19 |
# File 'lib/bitbucket_rest_api/utils/url.rb', line 17 def unescape(s) CGI.unescape s.to_s end |