Module: Seam::Http::UrlSearchParamsEncoder

Defined in:
lib/seam/request.rb

Defined Under Namespace

Classes: Decoded

Class Method Summary collapse

Class Method Details

.decode(query) ⇒ Object

Called by Faraday when a request path carries its own query string.



153
154
155
156
157
158
159
160
# File 'lib/seam/request.rb', line 153

def self.decode(query)
  return {} if query.nil? || query.empty?

  pairs = URI.decode_www_form(query.encode(Encoding::UTF_8))
  pairs.each_with_object({}) do |(name, value), decoded|
    (decoded[name] ||= Decoded.new([])).values << value
  end
end

.encode(params) ⇒ Object



134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'lib/seam/request.rb', line 134

def self.encode(params)
  search_params = Seam::UrlSearchParams.new
  map_params = {}

  params.each do |name, value|
    if value.is_a?(Decoded)
      value.values.each { |element| search_params.append(name, element) }
    else
      map_params[name] = value
    end
  end

  return search_params.to_s if map_params.empty?

  Seam.update_url_search_params(search_params, map_params)
  search_params.to_s
end