class Growing::Ruby::Sdk::Client
Attributes
account_id[R]
api_host[R]
data_source_id[R]
event_queue[R]
Public Class Methods
instance(account_id, data_source_id, api_host)
click to toggle source
# File lib/growing/ruby/sdk/client.rb, line 30 def self.instance(account_id, data_source_id, api_host) return @instance if @instance @instance_mutex.synchronize do @instance ||= new(account_id, data_source_id, api_host) end @instance end
new(account_id, data_source_id, api_host)
click to toggle source
# File lib/growing/ruby/sdk/client.rb, line 22 def initialize(account_id, data_source_id, api_host) @account_id = account_id @data_source_id = data_source_id @api_host = api_host @event_queue = {} @timers = Timers::Group.new end
Public Instance Methods
auto_track()
click to toggle source
thread unsafe
# File lib/growing/ruby/sdk/client.rb, line 82 def auto_track Thread.new do @timers.every(60) { send_data } loop { @timers.wait } end end
collect_cstm(login_user_id, event_key, props = {})
click to toggle source
# File lib/growing/ruby/sdk/client.rb, line 50 def collect_cstm(login_user_id, event_key, props = {}) event = ::Protocol::EventDto.new( project_key: @account_id, data_source_id: @data_source_id, user_id: login_user_id, gio_id: login_user_id, event_key: event_key, attributes: props, timestamp: current_timestamp) @event_queue['collect_cstm'] ||= [] @event_queue['collect_cstm'] << event end
collect_user(login_user_id, props = {})
click to toggle source
# File lib/growing/ruby/sdk/client.rb, line 38 def collect_user(login_user_id, props = {}) user = ::Protocol::UserDto.new( project_key: @account_id, data_source_id: @data_source_id, user_id: login_user_id, gio_id: login_user_id, attributes: props, timestamp: current_timestamp) @event_queue['collect_user'] ||= [] @event_queue['collect_user'] << user end
send_data()
click to toggle source
# File lib/growing/ruby/sdk/client.rb, line 63 def send_data @event_queue['collect_user'].to_a.in_groups_of(100) do |group| user_list = ::Protocol::UserList.new group.each do |user| user_list['values'] << user end _send_data('collect_user', JSON.parse(::Protocol::UserList.encode_json(user_list))["values"]) end @event_queue['collect_cstm'].to_a.in_groups_of(100) do |group| event_list = ::Protocol::EventList.new group.each do |event| event_list['values'] << event end _send_data('collect_cstm', JSON.parse(::Protocol::EventList.encode_json(event_list))["values"]) end @event_queue = {} end
Private Instance Methods
_send_data(action, data)
click to toggle source
# File lib/growing/ruby/sdk/client.rb, line 90 def _send_data(action, data) Faraday.post(url(action), "#{data}", "Content-Type" => "application/json") rescue pp 'Error' end
current_timestamp()
click to toggle source
# File lib/growing/ruby/sdk/client.rb, line 100 def current_timestamp ::DateTime.now.strftime('%Q').to_i end
url(action)
click to toggle source
# File lib/growing/ruby/sdk/client.rb, line 96 def url(action) "#{@api_host}/projects/#{@account_id}/#{action.gsub('_', '/')}" end