td-client 0.8.71 → 0.8.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c0915d6c13f678942cf1ee8e343177889927a563
4
- data.tar.gz: b328275191c096f34ab5d1bd249233864d9ca142
3
+ metadata.gz: a0f239495e96d72f93277ab75395f7e5f48596bd
4
+ data.tar.gz: b707ac4743e65d6bbd950a665f7889b64f1aaebd
5
5
  SHA512:
6
- metadata.gz: 52ca215f45608498aa20e47d3ba7f4cb025be9a8ebb8161ee5a09d7d939f5f24a45fd9ba4954770116813bf0f0bf58549afca9a626c7bd82aacd4a3ab7e28b0c
7
- data.tar.gz: 37155a1c498499cd4f43acc7839fcecff438ec827b1c89fca75bc81b8e5bbe727979c4b647fabe6661bb745dd0f4df27fd7eadef607e8a1ae330df19c3c95855
6
+ metadata.gz: 2e219700d74240c7080c8bfc6d717ea9d4efcaa027d9cecfd86c2e21c404d6d9aa4c4c4a150fb7058f8353a93492aa91500b7adc39a6dccc29eb698db1485802
7
+ data.tar.gz: 8099a83cdd1d941c350d30fd4c1f9d6eae658c799aae719d2e6477f75c22d829b23e4fd677e56d4a59da4bed511ad23342fccb7eaba27cdba92a60ce01b98a33
data/lib/td/client.rb CHANGED
@@ -229,6 +229,10 @@ class Client
229
229
  @api.job_result_format(job_id, format, io, &block)
230
230
  end
231
231
 
232
+ def job_result_raw(job_id, format, io=nil, &block)
233
+ @api.job_result_raw(job_id, format, io, &block)
234
+ end
235
+
232
236
  # @param [String] job_id
233
237
  # @param [Proc] block
234
238
  # @return [nil]
@@ -233,12 +233,28 @@ module Job
233
233
  # @param [String] job_id
234
234
  # @param [String] format
235
235
  # @return [String]
236
- def job_result_raw(job_id, format)
237
- code, body, res = get("/v3/job/result/#{e job_id}", {'format'=>format})
238
- if code != "200"
239
- raise_error("Get job result failed", res)
240
- end
241
- return body
236
+ def job_result_raw(job_id, format, io = nil, &block)
237
+ body = nil
238
+
239
+ get("/v3/job/result/#{e job_id}", {'format'=>format}) {|res|
240
+ if res.code != "200"
241
+ raise_error("Get job result failed", res)
242
+ end
243
+
244
+ if io
245
+ res.extend(DirectReadBodyMixin)
246
+
247
+ total_compr_size = 0
248
+ res.each_fragment {|fragment|
249
+ total_compr_size += fragment.size
250
+ io.write(fragment)
251
+ block.call(total_compr_size) if block_given?
252
+ }
253
+ else
254
+ body = res.read_body
255
+ end
256
+ }
257
+ body
242
258
  end
243
259
 
244
260
  # @param [String] job_id
@@ -495,6 +495,11 @@ class Job < Model
495
495
  @client.job_result_format(@job_id, format, io, &block)
496
496
  end
497
497
 
498
+ def result_raw(format, io=nil, &block)
499
+ return nil unless finished?
500
+ @client.job_result_raw(@job_id, format, io, &block)
501
+ end
502
+
498
503
  # @yield [result]
499
504
  # @return [nil]
500
505
  def result_each_with_compr_size(&block)
@@ -1,5 +1,5 @@
1
1
  module TreasureData
2
2
  class Client
3
- VERSION = '0.8.71'
3
+ VERSION = '0.8.72'
4
4
  end
5
5
  end
@@ -271,11 +271,26 @@ describe 'Job API' do
271
271
  end
272
272
 
273
273
  describe 'job_result_raw' do
274
- it 'returns raw result' do
275
- stub_api_request(:get, '/v3/job/result/12345').
276
- with(:query => {'format' => 'json'}).
277
- to_return(:body => 'raw binary')
278
- api.job_result_raw(12345, 'json').should == 'raw binary'
274
+ context 'with io' do
275
+ let(:io) { StringIO.new }
276
+
277
+ it 'returns raw result' do
278
+ stub_api_request(:get, '/v3/job/result/12345').
279
+ with(:query => {'format' => 'json'}).
280
+ to_return(:body => 'raw binary')
281
+ api.job_result_raw(12345, 'json', io)
282
+
283
+ io.string.should == 'raw binary'
284
+ end
285
+ end
286
+
287
+ context 'witout io' do
288
+ it 'returns raw result' do
289
+ stub_api_request(:get, '/v3/job/result/12345').
290
+ with(:query => {'format' => 'json'}).
291
+ to_return(:body => 'raw binary')
292
+ api.job_result_raw(12345, 'json').should == 'raw binary'
293
+ end
279
294
  end
280
295
  end
281
296
 
@@ -34,4 +34,32 @@ describe 'Job Model' do
34
34
  expect(subject).to eq client
35
35
  end
36
36
  end
37
+
38
+ describe '#result_raw' do
39
+ let(:client) { Client.authenticate('user', 'password') }
40
+ let(:job_id) { 12345678 }
41
+ let(:job) { Job.new(client, job_id, nil, nil) }
42
+ let(:format) { 'json' }
43
+ let(:io) { StringIO.new }
44
+
45
+ context 'not finished?' do
46
+ before { job.stub(:finished?) { false } }
47
+
48
+ it 'do not call #job_result_raw' do
49
+ client.should_not_receive(:job_result_raw)
50
+
51
+ expect(job.result_raw(format, io)).to_not be
52
+ end
53
+ end
54
+
55
+ context 'finished?' do
56
+ before { job.stub(:finished?) { true } }
57
+
58
+ it 'call #job_result_raw' do
59
+ client.should_receive(:job_result_raw).with(job_id, format, io)
60
+
61
+ job.result_raw(format, io)
62
+ end
63
+ end
64
+ end
37
65
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: td-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.71
4
+ version: 0.8.72
5
5
  platform: ruby
6
6
  authors:
7
7
  - Treasure Data, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-15 00:00:00.000000000 Z
11
+ date: 2015-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -74,7 +74,7 @@ dependencies:
74
74
  requirements:
75
75
  - - '>='
76
76
  - !ruby/object:Gem::Version
77
- version: 2.4.0
77
+ version: 2.5.2
78
78
  - - <
79
79
  - !ruby/object:Gem::Version
80
80
  version: 2.6.0
@@ -84,7 +84,7 @@ dependencies:
84
84
  requirements:
85
85
  - - '>='
86
86
  - !ruby/object:Gem::Version
87
- version: 2.4.0
87
+ version: 2.5.2
88
88
  - - <
89
89
  - !ruby/object:Gem::Version
90
90
  version: 2.6.0