lib/eotb.rb in eotb-0.5.2 vs lib/eotb.rb in eotb-0.5.3

- old
+ new

@@ -6,26 +6,37 @@ class Eotb METHODS = [:to_actor, :to_subject, :to_json, :to_hash, :inspect] - def self.configure(api_key, host = '127.0.0.1', port = '3000') + def self.configure(api_key, events = 1, host = '127.0.0.1', port = '3000') @@uri = URI.parse('http://' + host + ':' + port + '/events/' + api_key) @@post = Net::HTTP::Post.new(@@uri.path) + @@events = {} + @@counter = 1 + events >= 1 ? @@reset = events : @@reset = 1 end + def self.register_event(actor, action, subject = {}) - action = { "event[action]" => action.to_s } + action = { "event#{@@counter}[action]" => action.to_s } event = (hash_format(actor, :actor)).merge(action).merge(hash_format(subject, :subject)) - @@post.set_form_data(event) - begin - Timeout::timeout(2) { - Net::HTTP.new(@@uri.host, @@uri.port).start.request(@@post) - } - rescue => e - logger = Logger.new("log/#{ENV['RAILS_ENV']}.log") - logger.error "ERROR eotb gem: " + e.to_s + + @@events.merge! event + if (@@counter == @@reset) + @@post.set_form_data(@@events) + @@counter = 1 + begin + Timeout::timeout(2) { + Net::HTTP.new(@@uri.host, @@uri.port).start.request(@@post) + } + rescue => e + logger = Logger.new("log/#{ENV['RAILS_ENV']}.log") + logger.error "ERROR eotb gem: " + e.to_s + end + else + @@counter += 1 end end def self.value_format(value) value.send METHODS.find { |m| m if value.respond_to? m } @@ -47,13 +58,13 @@ def self.hash_format(hash, type) if hash.is_a?(Hash) h = hash_flatten(hash).map do |k, v| key = k.map{ |e| "[#{e}]" }.join - "\"event[#{type}]#{key}\" => #{value_format(v)}" + "\"event#{@@counter}[#{type}]#{key}\" => #{value_format(v)}" end.join(', ') else - h = "\"event[#{type}]\" => #{value_format(hash)}" + h = "\"event#{@@counter}[#{type}]\" => #{value_format(hash)}" end eval "{#{h.to_s}}" end end