class Algolia::Insights

def initialize(app_id, api_key, region = 'us', params = {})

def initialize(app_id, api_key, region = 'us', params = {})
  headers = params[:headers] || {}
  @app_id   = app_id
  @api_key  = api_key
  @url = "https://insights.#{region}.algolia.io"
  @headers  = headers.merge({
    Protocol::HEADER_APP_ID  => app_id,
    Protocol::HEADER_API_KEY => api_key,
    'Content-Type'           => 'application/json; charset=utf-8',
    'User-Agent'             => ["Algolia for Ruby (#{::Algolia::VERSION})", "Ruby (#{RUBY_VERSION})"].join('; ')
                            })
end

def perform_request(method, path, params = {}, data = {})

def perform_request(method, path, params = {}, data = {})
  http = HTTPClient.new
  url = @url + path
  encoded_params = Hash[params.map { |k, v| [k.to_s, v.is_a?(Array) ? v.to_json : v] }]
  url << "?" + Protocol.to_query(encoded_params)
  response = case method
             when :POST
               http.post(url, { :body => data, :header => @headers })
             end
  if response.code / 100 != 2
    raise AlgoliaProtocolError.new(response.code, "Cannot #{method} to #{url}: #{response.content}")
  end
  JSON.parse(response.content)
end

def send_event(event)

def send_event(event)
  send_events([event])
end

def send_events(events)

def send_events(events)
  perform_request(:POST, '/1/events', {}, { 'events' => events }.to_json)
end

def user(user_token)

def user(user_token)
  UserInsights.new(self, user_token)
end