module Faraday::Utils
Utils
contains various static helper methods.
Constants
- DEFAULT_SEP
- ESCAPE_RE
Attributes
Public Instance Methods
Source
# File lib/faraday/utils.rb, line 63 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
Normalize URI() behavior across Ruby versions
url - A String or URI
.
Returns a parsed URI
.
Source
# File lib/faraday/utils.rb, line 15 def build_nested_query(params) NestedParamsEncoder.encode(params) end
Source
# File lib/faraday/utils.rb, line 11 def build_query(params) FlatParamsEncoder.encode(params) end
Source
# File lib/faraday/utils.rb, line 109 def deep_merge(source, hash) deep_merge!(source.dup, hash) end
Recursive hash merge
Source
# File lib/faraday/utils.rb, line 97 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
Recursive hash update
Source
# File lib/faraday/utils.rb, line 50 def default_params_encoder @default_params_encoder ||= NestedParamsEncoder end
Source
# File lib/faraday/utils.rb, line 19 def default_space_encoding @default_space_encoding ||= '+' end
Source
# File lib/faraday/utils.rb, line 73 def default_uri_parser @default_uri_parser ||= begin require 'uri' Kernel.method(:URI) end end
Source
# File lib/faraday/utils.rb, line 80 def default_uri_parser=(parser) @default_uri_parser = if parser.respond_to?(:call) || parser.nil? parser else parser.method(:parse) end end
Source
# File lib/faraday/utils.rb, line 29 def escape(str) str.to_s.gsub(ESCAPE_RE) do |match| '%' + match.unpack('H2' * match.bytesize).join('%').upcase end.gsub(' ', default_space_encoding) end
Source
# File lib/faraday/utils.rb, line 90 def normalize_path(url) url = URI(url) (url.path.start_with?('/') ? url.path : '/' + url.path) + (url.query ? "?#{sort_query_params(url.query)}" : '') end
Receives a String or URI
and returns just the path with the query string sorted.
Source
# File lib/faraday/utils.rb, line 46 def parse_nested_query(query) NestedParamsEncoder.decode(query) end
Source
# File lib/faraday/utils.rb, line 42 def parse_query(query) FlatParamsEncoder.decode(query) end
Adapted from Rack
Source
# File lib/faraday/utils.rb, line 113 def sort_query_params(query) query.split('&').sort.join('&') end
Source
# File lib/faraday/utils.rb, line 35 def unescape(str) CGI.unescape str.to_s end