Class: SensorsAnalytics::SensorsAnalyticsConsumer

Inherits:
Object
  • Object
show all
Defined in:
lib/sensors_analytics/consumers.rb

Direct Known Subclasses

BatchConsumer, DebugConsumer, DefaultConsumer

Instance Method Summary collapse

Constructor Details

#initialize(server_url) ⇒ SensorsAnalyticsConsumer

Returns a new instance of SensorsAnalyticsConsumer.



7
8
9
# File 'lib/sensors_analytics/consumers.rb', line 7

def initialize(server_url)
  @http_client = Http.new(server_url, keep_alive: true)
end

Instance Method Details

#request!(event_list, headers = {}) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/sensors_analytics/consumers.rb', line 11

def request!(event_list, headers = {})
  unless event_list.is_a?(Array) && headers.is_a?(Hash)
    raise IllegalDataError.new("The argument of 'request!' should be a Array.")
  end

  # GZip && Base64 encode
  wio = StringIO.new("w")
  gzip_io = Zlib::GzipWriter.new(wio)
  gzip_io.write(event_list.to_json)
  gzip_io.close
  data = Base64.encode64(wio.string).gsub("\n", '')
  form_data = {"data_list" => data, "gzip" => 1}

  @http_client.request(form_data, headers)
end