class QuickbloxApi::Encoder
source: github.com/revans/quickblox/ TODO: logic should be simplified and moved into helpers
Public Class Methods
encode!(sorted_params)
click to toggle source
# File lib/quickblox_api/encoder.rb, line 5 def self.encode!(sorted_params) new(sorted_params).encode! end
new(sorted_params)
click to toggle source
# File lib/quickblox_api/encoder.rb, line 9 def initialize(sorted_params) @sorted_params = sorted_params end
Public Instance Methods
encode!()
click to toggle source
# File lib/quickblox_api/encoder.rb, line 13 def encode! var = encode(@sorted_params) var.map do |k,v| if v.is_a?(Hash) v.map { |k1,v1| "#{k}[#{k1}]=#{v1}" }.sort.join('&') else "#{k}=#{v}" end end.sort.join('&') end
Private Instance Methods
append_key(root_key, key)
click to toggle source
# File lib/quickblox_api/encoder.rb, line 49 def append_key(root_key, key) root_key.nil? ? :"#{key}" : :"#{root_key}[#{key.to_s}]" end
encode(value, key = nil, out_hash = {})
click to toggle source
# File lib/quickblox_api/encoder.rb, line 30 def encode(value, key = nil, out_hash = {}) case value when Hash value.each { |k,v| encode(v, append_key(key, k), out_hash) } out_hash when Array value.each { |v| encode(v, "#{key}[]", out_hash) } out_hash when nil '' else out_hash[key] = value out_hash end end