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