Module: Faraday::Utils
- Defined in:
- lib/faraday/utils.rb,
lib/faraday/utils/headers.rb,
lib/faraday/utils/params_hash.rb
Overview
Utils contains various static helper methods.
Defined Under Namespace
Classes: Headers, ParamsHash
Constant Summary collapse
- ESCAPE_RE =
/[^a-zA-Z0-9 .~_-]/.freeze
- DEFAULT_SEP =
/[&;] */n.freeze
Class Attribute Summary collapse
Class Method Summary collapse
- .build_nested_query(params) ⇒ Object
- .build_query(params) ⇒ Object
-
.deep_merge(source, hash) ⇒ Object
Recursive hash merge.
-
.deep_merge!(target, hash) ⇒ Object
Recursive hash update.
- .default_uri_parser ⇒ Object
- .default_uri_parser=(parser) ⇒ Object
- .escape(str) ⇒ Object
-
.normalize_path(url) ⇒ Object
Receives a String or URI and returns just the path with the query string sorted.
- .parse_nested_query(query) ⇒ Object
-
.parse_query(query) ⇒ Object
Adapted from Rack.
- .sort_query_params(query) ⇒ Object
- .unescape(str) ⇒ Object
-
.URI(url) ⇒ Object
Normalize URI() behavior across Ruby versions.
Class Attribute Details
.default_params_encoder ⇒ Object
42 43 44 |
# File 'lib/faraday/utils.rb', line 42 def default_params_encoder @default_params_encoder ||= NestedParamsEncoder end |
Class Method Details
.build_nested_query(params) ⇒ Object
15 16 17 |
# File 'lib/faraday/utils.rb', line 15 def build_nested_query(params) NestedParamsEncoder.encode(params) end |
.build_query(params) ⇒ Object
11 12 13 |
# File 'lib/faraday/utils.rb', line 11 def build_query(params) FlatParamsEncoder.encode(params) end |
.deep_merge(source, hash) ⇒ Object
Recursive hash merge
101 102 103 |
# File 'lib/faraday/utils.rb', line 101 def deep_merge(source, hash) deep_merge!(source.dup, hash) end |
.deep_merge!(target, hash) ⇒ Object
Recursive hash update
89 90 91 92 93 94 95 96 97 98 |
# File 'lib/faraday/utils.rb', line 89 def deep_merge!(target, hash) hash.each do |key, value| target[key] = if value.is_a?(Hash) && target[key].is_a?(Hash) deep_merge(target[key], value) else value end end target end |
.default_uri_parser ⇒ Object
65 66 67 68 69 70 |
# File 'lib/faraday/utils.rb', line 65 def default_uri_parser @default_uri_parser ||= begin require 'uri' Kernel.method(:URI) end end |
.default_uri_parser=(parser) ⇒ Object
72 73 74 75 76 77 78 |
# File 'lib/faraday/utils.rb', line 72 def default_uri_parser=(parser) @default_uri_parser = if parser.respond_to?(:call) || parser.nil? parser else parser.method(:parse) end end |
.escape(str) ⇒ Object
21 22 23 24 25 |
# File 'lib/faraday/utils.rb', line 21 def escape(str) str.to_s.gsub(ESCAPE_RE) do |match| '%' + match.unpack('H2' * match.bytesize).join('%').upcase end.tr(' ', '+') end |
.normalize_path(url) ⇒ Object
Receives a String or URI and returns just the path with the query string sorted.
82 83 84 85 86 |
# File 'lib/faraday/utils.rb', line 82 def normalize_path(url) url = URI(url) (url.path.start_with?('/') ? url.path : '/' + url.path) + (url.query ? "?#{sort_query_params(url.query)}" : '') end |
.parse_nested_query(query) ⇒ Object
38 39 40 |
# File 'lib/faraday/utils.rb', line 38 def parse_nested_query(query) NestedParamsEncoder.decode(query) end |
.parse_query(query) ⇒ Object
Adapted from Rack
34 35 36 |
# File 'lib/faraday/utils.rb', line 34 def parse_query(query) FlatParamsEncoder.decode(query) end |
.sort_query_params(query) ⇒ Object
105 106 107 |
# File 'lib/faraday/utils.rb', line 105 def sort_query_params(query) query.split('&').sort.join('&') end |
.unescape(str) ⇒ Object
27 28 29 |
# File 'lib/faraday/utils.rb', line 27 def unescape(str) CGI.unescape str.to_s end |
.URI(url) ⇒ Object
Normalize URI() behavior across Ruby versions
url - A String or URI.
Returns a parsed URI.
55 56 57 58 59 60 61 62 63 |
# File 'lib/faraday/utils.rb', line 55 def URI(url) # rubocop:disable Naming/MethodName if url.respond_to?(:host) url elsif url.respond_to?(:to_str) default_uri_parser.call(url) else raise ArgumentError, 'bad argument (expected URI object or URI string)' end end |