class TDAnalytics::DebugConsumer
DebugConsumer
逐条、同步地向服务端上报数据 DebugConsumer
会返回详细的报错信息,建议在集成阶段先使用 DebugConsumer
调试接口
Public Class Methods
new(server_url, app_id, write_data = true)
click to toggle source
# File lib/thinkingdata-ruby/debug_consumer.rb, line 9 def initialize(server_url, app_id, write_data = true) @server_uri = URI.parse(server_url) @server_uri.path = '/data_debug' @app_id = app_id @write_data = write_data end
Public Instance Methods
add(message)
click to toggle source
# File lib/thinkingdata-ruby/debug_consumer.rb, line 16 def add(message) puts message.to_json headers = { 'TA-Integration-Type'=>'Ruby', 'TA-Integration-Version'=>TDAnalytics::VERSION, 'TA-Integration-Count'=>'1', 'TA_Integration-Extra'=>'debug' } form_data = {"data" => message.to_json, "appid" => @app_id, "dryRun" => @write_data ? "0" : "1", "source" => "server"} begin response_code, response_body = request(@server_uri, form_data,headers) rescue => e raise ConnectionError.new("Could not connect to TA server, with error \"#{e.message}\".") end result = {} if response_code.to_i == 200 begin result = JSON.parse(response_body.to_s) rescue JSON::JSONError raise ServerError.new("Could not interpret TA server response: '#{response_body}'") end end if result['errorLevel'] != 0 raise ServerError.new("Could not write to TA, server responded with #{response_code} returning: '#{response_body}'") end end
request(uri, form_data,headers)
click to toggle source
# File lib/thinkingdata-ruby/debug_consumer.rb, line 45 def request(uri, form_data,headers) request = Net::HTTP::Post.new(uri.request_uri,headers) request.set_form_data(form_data) client = Net::HTTP.new(uri.host, uri.port) client.use_ssl = uri.scheme === 'https' ? true : false client.open_timeout = 10 client.continue_timeout = 10 client.read_timeout = 10 client.ssl_timeout = 10 response = client.request(request) [response.code, response.body] end