class Algolia::UserInsights

def clicked(event, event_name, index_name, request_options = {})

def clicked(event, event_name, index_name, request_options = {})
  send_event(event.merge({
                            'eventType' => 'click',
                            'eventName' => event_name,
                            'index' => index_name,
                        }))
end

def clicked_filters(event_name, index_name, filters, request_options = {})

def clicked_filters(event_name, index_name, filters, request_options = {})
  clicked({ 'filters' => filters }, event_name, index_name, request_options)
end

def clicked_object_ids(event_name, index_name, object_ids, request_options = {})

def clicked_object_ids(event_name, index_name, object_ids, request_options = {})
  clicked({ 'objectIDs' => object_ids }, event_name, index_name, request_options)
end

def clicked_object_ids_after_search(event_name, index_name, object_ids, positions, query_id, request_options = {})

def clicked_object_ids_after_search(event_name, index_name, object_ids, positions, query_id, request_options = {})
  clicked({
              'objectIDs' => object_ids,
              'positions' => positions,
              'queryID' => query_id,
          }, event_name, index_name, request_options)
end

def converted(event, event_name, index_name, request_options = {})

def converted(event, event_name, index_name, request_options = {})
  send_event(event.merge({
                            'eventType' => 'conversion',
                            'eventName' => event_name,
                            'index' => index_name,
                        }))
end

def converted_filters(event_name, index_name, filters, request_options = {})

def converted_filters(event_name, index_name, filters, request_options = {})
  converted({ 'filters' => filters }, event_name, index_name, request_options)
end

def converted_object_ids(event_name, index_name, object_ids, request_options = {})

def converted_object_ids(event_name, index_name, object_ids, request_options = {})
  converted({ 'objectIDs' => object_ids }, event_name, index_name, request_options)
end

def converted_object_ids_after_search(event_name, index_name, object_ids, query_id, request_options = {})

def converted_object_ids_after_search(event_name, index_name, object_ids, query_id, request_options = {})
  converted({
              'objectIDs' => object_ids,
              'queryID' => query_id,
          }, event_name, index_name, request_options)
end

def initialize(insights, user_token)

def initialize(insights, user_token)
  @insights = insights
  @user_token = user_token
end

def send_event(event)

def send_event(event)
  @insights.send_event(event.merge({ 'userToken' => @user_token}))
end

def viewed(event, event_name, index_name, request_options = {})

def viewed(event, event_name, index_name, request_options = {})
  send_event(event.merge({
                            'eventType' => 'view',
                            'eventName' => event_name,
                            'index' => index_name,
                        }))
end

def viewed_filters(event_name, index_name, filters, request_options = {})

def viewed_filters(event_name, index_name, filters, request_options = {})
  viewed({ 'filters' => filters }, event_name, index_name, request_options)
end

def viewed_object_ids(event_name, index_name, object_ids, request_options = {})

def viewed_object_ids(event_name, index_name, object_ids, request_options = {})
  viewed({ 'objectIDs' => object_ids }, event_name, index_name, request_options)
end