lib/td/api_iface.rb in td-0.7.0 vs lib/td/api_iface.rb in td-0.7.1
- old
+ new
@@ -139,18 +139,52 @@
js = JSON.load(body)
# TODO debug
type = (js['type'] || '?').to_sym # TODO
query = js['query']
status = js['status']
- result = js['result']
debug = js['debug']
url = js['url']
start_at = js['start_at']
end_at = js['end_at']
- return [type, query, status, result, url, debug, start_at, end_at]
+ return [type, query, status, url, debug, start_at, end_at]
end
+ def job_result(job_id)
+ require 'msgpack'
+ code, body, res = get("/v3/job/result/#{e job_id}", {'format'=>'msgpack'})
+ if code != "200"
+ raise_error("Get job result failed", res)
+ end
+ result = []
+ MessagePack::Unpacker.new.feed_each(body) {|row|
+ result << row
+ }
+ return result
+ end
+
+ def job_result_each(job_id, &block)
+ # TODO chunked encoding
+ require 'msgpack'
+ code, body, res = get("/v3/job/result/#{e job_id}", {'format'=>'msgpack'})
+ if code != "200"
+ raise_error("Get job result failed", res)
+ end
+ result = []
+ MessagePack::Unpacker.new.feed_each(body) {|row|
+ yield row
+ }
+ nil
+ end
+
+ def job_result_raw(job_id, format)
+ code, body, res = get("/v3/job/result/#{e job_id}", {'format'=>format})
+ if code != "200"
+ raise_error("Get job result failed", res)
+ end
+ return body
+ end
+
# => jobId:String
def hive_query(q, db=nil)
code, body, res = post("/v3/job/issue/hive/#{e db}", {'query'=>q})
if code != "200"
raise_error("Query failed", res)
@@ -209,11 +243,19 @@
status = js['status']
return status
end
private
- HOST = ENV['TD_API_SERVER'] || 'api.treasure-data.com'
- PORT = 80
+ host = 'api.treasure-data.com'
+ port = 80
+ if e = ENV['TD_API_SERVER']
+ host, port_ = e.split(':',2)
+ port_ = port_.to_i
+ port = port_ if port_ != 0
+ end
+
+ HOST = host
+ PORT = port
USE_SSL = false
BASE_URL = ''
def get(url, params=nil)
http, header = new_http