class Koko::Tracker::Request
Attributes
stub[RW]
http[R]
Public Class Methods
new(options = {})
click to toggle source
public: Creates a new request object to send analytics batch
# File lib/koko/tracker/request.rb, line 19 def initialize(options = {}) options[:host] ||= Defaults::Request.host options[:port] ||= Defaults::Request.port options[:ssl] ||= Defaults::Request.ssl options[:headers] ||= Defaults::Request.headers @path = options[:path] || Defaults::Request.path http = Net::HTTP.new(options[:host], options[:port]) http.use_ssl = options[:ssl] http.read_timeout = 8 http.open_timeout = 4 @http = http end
Public Instance Methods
post(auth, body)
click to toggle source
public: Posts the write key and batch of messages to the API.
returns - Response
of the status and error if it exists
# File lib/koko/tracker/request.rb, line 37 def post(auth, body) status = nil headers = { 'Content-Type' => 'application/json' } begin payload = JSON.generate body request = Net::HTTP::Post.new(@path, headers) request['authorization'] = auth response = nil if self.class.stub status = 200 logger.debug "stubbed request to #{@path}: auth = #{auth}, payload = #{payload}" else res = @http.request(request, payload) status = res.code.to_i if status < 500 response = JSON.parse(res.body) else response = res.body end end rescue Exception => e logger.error e.message e.backtrace.each { |line| logger.error line } status = -1 response = "Connection error: #{e}" end Response.new status, response end