class Mixpanel::Client
Attributes
api_key[R]
api_secret[R]
base_url[R]
data_url[R]
expire_at[R]
Public Class Methods
new(options)
click to toggle source
# File lib/sourmix/mixpanel_client.rb, line 11 def initialize options @api_key = options.fetch :api_key @api_secret = options.fetch :api_secret @base_url = options.fetch :base_url, 'https://mixpanel.com/api/2.0' @data_url = options.fetch :data_url, 'https://data.mixpanel.com/api/2.0' @expire_at = options.fetch :expire_at, 90 # seconds end
Public Instance Methods
request(endpoint, params)
click to toggle source
# File lib/sourmix/mixpanel_client.rb, line 19 def request endpoint, params resp = Net::HTTP.get request_uri(endpoint, params) resp.lines.map { |l| JSON.parse l } end
request_uri(endpoint, params)
click to toggle source
# File lib/sourmix/mixpanel_client.rb, line 24 def request_uri endpoint, params URI request_url(endpoint, params) end
Private Instance Methods
encode_params(params)
click to toggle source
# File lib/sourmix/mixpanel_client.rb, line 49 def encode_params params params.map { |k,v| "#{k}=#{CGI.escape(v.to_s)}" }.sort.join('&') end
normalize_params(endpoint, params)
click to toggle source
# File lib/sourmix/mixpanel_client.rb, line 61 def normalize_params endpoint, params params.merge \ api_key: api_key, expire: request_expire(params), format: request_format(endpoint) end
request_api(endpoint)
click to toggle source
# File lib/sourmix/mixpanel_client.rb, line 39 def request_api endpoint return data_url if endpoint == 'export' return base_url end
request_expire(params)
click to toggle source
# File lib/sourmix/mixpanel_client.rb, line 68 def request_expire params return params[:expire] if params[:expire] Time.now.to_i + expire_at end
request_format(endpoint)
click to toggle source
# File lib/sourmix/mixpanel_client.rb, line 44 def request_format endpoint return :raw if endpoint == 'export' return :json end
request_url(endpoint, params)
click to toggle source
# File lib/sourmix/mixpanel_client.rb, line 31 def request_url endpoint, params api = request_api endpoint url = File.join api, endpoint.to_s sps = sign_params endpoint, params qs = encode_params sps "#{url}?#{qs}" end
sign_params(endpoint, params)
click to toggle source
# File lib/sourmix/mixpanel_client.rb, line 53 def sign_params endpoint, params nps = normalize_params endpoint, params jps = nps.map { |k,v| "#{k}=#{v}" }.sort.join('') req = jps + api_secret nps[:sig] = Digest::MD5.hexdigest req nps end