class CountOnce

Constants

DEFAULT_DOMAIN
DEFAULT_SCHEMA
VERSION

Attributes

account_id[RW]
auth_token[RW]
url[RW]

Public Class Methods

new(credentials = {}) click to toggle source
# File lib/countonce.rb, line 17
def initialize(credentials = {})
  @account_id = credentials[:account_id]
  @auth_token = credentials[:auth_token]

  api_protocol = ENV.key?("_API_PROTOCOL") ? ENV["_API_PROTOCOL"] : DEFAULT_SCHEMA
  api_domain = ENV.key?("_API_DOMAIN") ? ENV["_API_DOMAIN"] : DEFAULT_DOMAIN
  
  @url = "#{api_protocol}://#{credentials[:account_id]}.#{api_domain}"
end

Public Instance Methods

getCombined(key_name, query_options = {}, iterator = nil) click to toggle source
# File lib/countonce.rb, line 101
def getCombined(key_name, query_options = {}, iterator = nil)
  self.query(key_name, 'combined', query_options, iterator)
end
getIncrements(key_name, query_options = {}, iterator = nil) click to toggle source
# File lib/countonce.rb, line 93
def getIncrements(key_name, query_options = {}, iterator = nil)
  self.query(key_name, 'increments', query_options, iterator)
end
getRevenue(key_name, query_options = {}, iterator = nil) click to toggle source
# File lib/countonce.rb, line 97
def getRevenue(key_name, query_options = {}, iterator = nil)
  self.query(key_name, 'revenue', query_options, iterator)
end
getUniques(key_name, query_options = {}, iterator = nil) click to toggle source
# File lib/countonce.rb, line 89
def getUniques(key_name, query_options = {}, iterator = nil)
  self.query(key_name, 'uniques', query_options, iterator)
end
ping(ping_options = {}) click to toggle source
# File lib/countonce.rb, line 27
def ping(ping_options = {})
  url_params = {}
  url_params["key"] = ping_options[:key] || ""
  url_params["unique_value"] = ping_options[:unique_value] || ""
  
  headers = {}
  headers["Content-Type"] = "application/x-www-form-urlencoded; charset=UTF-8" 
  headers["Authorization"] = "Bearer #{@auth_token}" if @auth_token

  if ping_options[:attributes]
    ping_options[:attributes].each {|key, value| url_params["attributes[#{key}]"] = value}
  end

  url_params["revenue"] = ping_options[:revenue] if ping_options[:revenue]
  url_params["timezone"] = ping_options[:timezone] if ping_options[:timezone]

  response = HTTParty.post(
    @url + "/ping",
    :body => url_params,
    :headers => headers,
    :verify => false
  )

  PingResult.new(response.parsed_response)
end
query(key_name, query_type, query_options = {}, iterator = nil) click to toggle source
# File lib/countonce.rb, line 53
def query(key_name, query_type, query_options = {}, iterator = nil)
  url_params = {}
  url_params["iterator"] = iterator if iterator

  headers = {}
  headers["Authorization"] = "Bearer #{@auth_token}" if @auth_token

  if query_options[:filter]
    query_options[:filter].each {|key, value| url_params["filter[#{key}]"] = value}
  end

  if query_options[:include]
    if query_options[:include].is_a? Array
      query_options[:include] = query_options[:include].join(",")
    end
    
    url_params["include"] = query_options[:include]
  end

  url_params["start_date"] = query_options[:start_date] if query_options[:start_date]
  url_params["end_date"] = query_options[:start_date] if query_options[:end_date]
  url_params["range"] = query_options[:start_date] if query_options[:range]
  url_params["prev_start_date"] = query_options[:start_date] if query_options[:prev_start_date]
  url_params["prev_end_date"] = query_options[:start_date] if query_options[:prev_end_date]
  url_params["prev_range"] = query_options[:start_date] if query_options[:prev_date]

  response = HTTParty.get(
    "#{@url}/#{query_type}/#{key_name}/#{query_options[:metric] || 'daily'}",
    :query => url_params,
    :headers => headers,
    :verify => false
  )

  return QueryResult.new(response.parsed_response)
end