lib/kmts.rb in kmts-2.0.1 vs lib/kmts.rb in kmts-3.0.0

- old
+ new

@@ -5,16 +5,19 @@ require 'kmts/saas' class KMError < StandardError; end class KMTS + DEFAULT_TRACKING_SERVER = 'https://trk.kissmetrics.com'.freeze + PROTOCOL_MATCHER = %r(://) + @key = nil @logs = {} - @host = 'trk.kissmetrics.com:80' + @host = DEFAULT_TRACKING_SERVER @log_dir = '/tmp' @to_stderr = true - @use_cron = false + @use_cron = true @dryrun = false class << self class IdentError < StandardError; end class InitError < StandardError; end @@ -119,11 +122,11 @@ end def reset @id = nil @key = nil @logs = {} - @host = 'trk.kissmetrics.com:80' + @host = DEFAULT_TRACKING_SERVER @log_dir = '/tmp' @to_stderr = true @use_cron = false @env = nil @force = false @@ -187,15 +190,15 @@ data = hash_keys_to_str(data) query_arr = [] query = '' data.update('_p' => id) if id data.update('_k' => @key) - data.update '_d' => 1 if data['_t'] + data.update '_d' => 1 if data['_t'] || @use_cron data['_t'] ||= Time.now.to_i - + unsafe = Regexp.new("[^#{URI::REGEXP::PATTERN::UNRESERVED}]", false, 'N') - + data.inject(query) do |query,key_val| query_arr << key_val.collect { |i| URI.escape(i.to_s, unsafe) }.join('=') end query = '/' + type + '?' + query_arr.join('&') if @use_cron @@ -213,14 +216,16 @@ def send_query(line) if @dryrun log_sent(line) else begin - host,port = @host.split(':') - proxy = URI.parse(ENV['http_proxy'] || ENV['HTTP_PROXY'] || '') - res = Net::HTTP::Proxy(proxy.host, proxy.port, proxy.user, proxy.password).start(host, port) do |http| - http.get(line) - end + host = @host + host = "http://#{host}" unless host =~ PROTOCOL_MATCHER + uri = URI.parse(host) + + http = Net::HTTP.new(uri.host, uri.port) + http.use_ssl = uri.is_a?(URI::HTTPS) + http.get(line) rescue Exception => e raise KMError.new("#{e} for host #{@host}") end log_sent(line) end