module Tamber::Util

Public Class Methods

convert_full(resp) click to toggle source
# File lib/tamber/util.rb, line 45
def self.convert_full(resp)
  case resp
  when Hash
    object_classes.fetch(resp[:object],TamberObject).construct_from(resp)
  when Array
    resp.map { |i| convert_full(i) }
  else
    resp
  end
end
convert_to_tamber_object(resp) click to toggle source
# File lib/tamber/util.rb, line 56
def self.convert_to_tamber_object(resp)
  case resp
  when Hash
    object_classes.fetch(resp[:object],TamberObject).construct_from(resp)
  when Array
    if resp.size == 1
      resp = resp[0]
      self.convert_full(resp)
    else
      resp.map { |i| convert_full(i) }
    end
  else
    resp
  end
end
encode_parameters(params) click to toggle source
# File lib/tamber/util.rb, line 7
def self.encode_parameters(params)
  Util.flatten_params(params).
    map { |k,v| "#{url_encode(k)}=#{url_encode(v)}" }.join('&')
end
flatten_params(params, parent_key=nil) click to toggle source
# File lib/tamber/util.rb, line 17
def self.flatten_params(params, parent_key=nil)
  result = []

  params.sort_by { |(k, v)| k.to_s }.each do |key, value|
    calculated_key = parent_key ? "#{parent_key}[#{key}]" : "#{key}"
    if value.is_a?(Hash) || value.is_a?(Array) || value.is_a?(APIResource)
      result << [calculated_key, value.to_json]
    else
      result << [calculated_key, value]
    end
  end

  result
end
object_classes() click to toggle source
# File lib/tamber/util.rb, line 32
def self.object_classes
  @object_classes ||= {
    # Core
    'event' => Event,
    'discovery' => Discovery,

    # Expanded
    'user' => User,
    'item' => Item,
    'behavior' => Behavior,
  }
end
symbolize_names(object) click to toggle source
# File lib/tamber/util.rb, line 72
def self.symbolize_names(object)
  case object
  when Hash
    new_hash = {}
    object.each do |key, value|
      key = (key.to_sym rescue key) || key
      new_hash[key] = symbolize_names(value)
    end
    new_hash
  when Array
    object.map { |value| symbolize_names(value) }
  else
    object
  end
end
url_encode(key) click to toggle source
# File lib/tamber/util.rb, line 12
def self.url_encode(key)
  CGI.escape(key.to_s).
    gsub('%5B', '[').gsub('%5D', ']')
end