Module: Faraday::Utils
- Extended by:
- Utils, Rack::Utils
- Includes:
- Rack::Utils
- Included in:
- Connection, Utils
- Defined in:
- lib/faraday/utils.rb
Defined Under Namespace
Classes: Headers
Instance Method Summary collapse
-
#build_nested_query(value, prefix = nil) ⇒ Object
Override Rack’s version since it doesn’t handle non-String values.
-
#escape(s) ⇒ Object
Be sure to URI escape ‘+’ symbols to %2B.
-
#merge_headers(existing_headers, new_headers) ⇒ Object
Turns headers keys and values into strings.
-
#merge_params(existing_params, new_params) ⇒ Object
Turns param keys into strings.
-
#normalize_path(url) ⇒ Object
Receives a URL and returns just the path with the query string sorted.
Instance Method Details
#build_nested_query(value, prefix = nil) ⇒ Object
Override Rack’s version since it doesn’t handle non-String values
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/faraday/utils.rb', line 51 def build_nested_query(value, prefix = nil) case value when Array value.map { |v| build_nested_query(v, "#{prefix}[]") }.join("&") when Hash value.map { |k, v| build_nested_query(v, prefix ? "#{prefix}[#{escape(k)}]" : escape(k)) }.join("&") when NilClass prefix else raise ArgumentError, "value must be a Hash" if prefix.nil? "#{prefix}=#{escape(value)}" end end |
#escape(s) ⇒ Object
Be sure to URI escape ‘+’ symbols to %2B. Otherwise, they get interpreted as spaces.
69 70 71 72 73 |
# File 'lib/faraday/utils.rb', line 69 def escape(s) s.to_s.gsub(/([^a-zA-Z0-9_.-]+)/n) do '%' << $1.unpack('H2'*bytesize($1)).join('%').tap { |c| c.upcase! } end end |
#merge_headers(existing_headers, new_headers) ⇒ Object
Turns headers keys and values into strings
83 84 85 86 87 |
# File 'lib/faraday/utils.rb', line 83 def merge_headers(existing_headers, new_headers) new_headers.each do |key, value| existing_headers[key] = value.to_s end end |
#merge_params(existing_params, new_params) ⇒ Object
Turns param keys into strings
76 77 78 79 80 |
# File 'lib/faraday/utils.rb', line 76 def merge_params(existing_params, new_params) new_params.each do |key, value| existing_params[key.to_s] = value end end |
#normalize_path(url) ⇒ Object
Receives a URL and returns just the path with the query string sorted.
90 91 92 93 |
# File 'lib/faraday/utils.rb', line 90 def normalize_path(url) (url.path != "" ? url.path : "/") + (url.query ? "?#{sort_query_params(url.query)}" : "") end |