module Sailthru::Helpers

Public Instance Methods

extract_param_values(params) click to toggle source

params:

params, Hash

returns:

Array, values of each item in the Hash (and nested hashes)

Extracts the values of a set of parameters, recursing into nested assoc arrays.

# File lib/sailthru/helpers.rb, line 11
def extract_param_values(params)
  values = []
  params.each do |k, v|
    if v.is_a? Hash
      values.concat extract_param_values(v)
   elsif v.is_a? Array
      temp_hash = {}
      v.each_with_index do |v_,i_|
        temp_hash[i_.to_s] = v_
      end
      values.concat extract_param_values(temp_hash)
    else
      values.push v.to_s
    end
  end
  return values
end
flatten_nested_hash(hash, brackets = true) click to toggle source

Flatten nested hash for GET / POST request.

# File lib/sailthru/helpers.rb, line 52
def flatten_nested_hash(hash, brackets = true)
  f = {}
  hash.each do |key, value|
    _key = brackets ? "[#{key}]" : key.to_s
    if value.class == Hash
      flatten_nested_hash(value).each do |k, v|
        f["#{_key}#{k}"] = v
      end
    elsif value.class == Array
      temp_hash = {}
      value.each_with_index do |v, i|
         temp_hash[i.to_s] = v
      end
      flatten_nested_hash(temp_hash).each do |k, v|
        f["#{_key}#{k}"] = v
      end

    else
      f[_key] = value
    end
  end
  return f
end
get_signature_hash(params, secret) click to toggle source

params:

params, Hash
secret, String

returns:

String

Returns an MD5 hash of the signature string for an API call.

# File lib/sailthru/helpers.rb, line 47
def get_signature_hash(params, secret)
  Digest::MD5.hexdigest(get_signature_string(params, secret)).to_s
end
get_signature_string(params, secret) click to toggle source

params:

params, Hash
secret, String

returns:

String

Returns the unhashed signature string (secret + sorted list of param values) for an API call.

# File lib/sailthru/helpers.rb, line 36
def get_signature_string(params, secret)
  return secret + extract_param_values(params).sort.join("")
end