class MixpanelExport::Request
Attributes
api_key[R]
api_secret[R]
Public Class Methods
new(api_secret, api_key)
click to toggle source
# File lib/mixpanel_export/request.rb, line 14 def initialize(api_secret, api_key) @api_secret = api_secret @api_key = api_key end
Public Instance Methods
get(path, options={})
click to toggle source
# File lib/mixpanel_export/request.rb, line 19 def get(path, options={}) response = self.class.get(path, query: build_query(Hash[normalize(options)])) if response.success? response.parsed_response || "" else raise RequestError, response.parsed_response["error"] end end
Private Instance Methods
build_query(options)
click to toggle source
# File lib/mixpanel_export/request.rb, line 40 def build_query(options) query = options.dup || {} query = ({ format: default_format, expire: default_request_expiration, api_key: api_key }).merge(query) query.merge!(sig: calculate_signature(query)) query end
calculate_signature(args)
click to toggle source
# File lib/mixpanel_export/request.rb, line 33 def calculate_signature(args) digest = Digest::MD5.new digest << args.map { |k,v| "#{k}=#{v}" }.sort.join digest << api_secret digest.hexdigest end
default_format()
click to toggle source
# File lib/mixpanel_export/request.rb, line 69 def default_format "json" end
default_request_expiration()
click to toggle source
# File lib/mixpanel_export/request.rb, line 73 def default_request_expiration Time.now.utc.to_i + 600 end
normalize(hash={})
click to toggle source
# File lib/mixpanel_export/request.rb, line 53 def normalize(hash={}) hash.map do |k,v| k, v = k, case v when is_a?(String) v.encode("utf-8") when is_a?(Array) JSON.dump(v).encode("utf-8") when is_a?(Hash) normalize(v) else v.to_s end end end