td-client 1.0.7 → 1.0.8

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
  SHA256:
3
- metadata.gz: bfa8466ceb0e2dc014d9222e5bb295d7f9102951828531d993f9d92eb6592457
4
- data.tar.gz: 8521a0ec4855d3d266fceabe8bbb7a42fcf52c38bdf4f6d8e8af96cae97add7f
3
+ metadata.gz: 8650b4fe6267d1edb91dad045ac0b31f77d0d0e37d776ea5433ec88debfe4b81
4
+ data.tar.gz: baf35bbd09b187c8f76ee48f68328f23ac09721ddb31641154a97900dc4ac93b
5
5
  SHA512:
6
- metadata.gz: 477518baf02db8ec6f126f847d54b2b9fe5885a4bb3c5d6d07dfb4a8110d997ca4288541260932abd0e69dc56c50dd0ed1d62b5fbd9884cc6be10b31329b8440
7
- data.tar.gz: f13066abdba694a7dd28f3fe67efac2c598f25b67f1fa7948dc85b4cdd6d9c476ea12eddd63b3229cb275ba193cb397f3a803a2c6ccc56cf7c08e56498d93e34
6
+ metadata.gz: 643dc4c3d7ec6e5e73b506f3b18750a7aeaf73e915890c68ccd7b590f8d539a1fb047f5adbb4652bb0a732f2e8466658be112384d9d57aae1cb72b902b8a4b46
7
+ data.tar.gz: fbf3228a704dd954299becd06462920f72934674d8cae49ba1db91d169441fe4a079348e33ec8f2e3b08c986b5383fbf476f7161de8711a3677583da1b4b3169
data/lib/td/client/api.rb CHANGED
@@ -636,15 +636,27 @@ private
636
636
  klass
637
637
  else
638
638
  case status_code
639
+ when "400"
640
+ BadRequestError
641
+ when "401"
642
+ AuthError
643
+ when "403"
644
+ ForbiddenError
639
645
  when "404"
640
646
  NotFoundError
647
+ when "405"
648
+ MethodNotAllowedError
641
649
  when "409"
642
650
  message = "#{message}: conflicts_with job:#{error["details"]["conflicts_with"]}" if error["details"] && error["details"]["conflicts_with"]
643
651
  AlreadyExistsError
644
- when "401"
645
- AuthError
646
- when "403"
647
- ForbiddenError
652
+ when "415"
653
+ UnsupportedMediaTypeError
654
+ when "422"
655
+ UnprocessableEntityError
656
+ when "429"
657
+ TooManyRequestsError
658
+ when /\A4\d\d\z/
659
+ ClientError
648
660
  else
649
661
  message = "#{status_code}: #{message}"
650
662
  APIError
@@ -29,9 +29,7 @@ module Import
29
29
  if code[0] != ?2
30
30
  raise_error("Import failed", res)
31
31
  end
32
- js = checked_json(body, %w[])
33
- time = js['elapsed_time'].to_f
34
- return time
32
+ return true
35
33
  end
36
34
 
37
35
  end
@@ -13,16 +13,32 @@ class APIError < StandardError
13
13
  end
14
14
  end
15
15
 
16
- # 401 API errors
17
- class AuthError < APIError
16
+ # 4xx Client Errors
17
+ class ClientError < APIError
18
18
  end
19
19
 
20
- # 403 API errors, used for database permissions
21
- class ForbiddenError < APIError
20
+ # 400 Bad Request
21
+ class BadRequestError < ClientError
22
22
  end
23
23
 
24
- # 409 API errors
25
- class AlreadyExistsError < APIError
24
+ # 401 Unauthorized
25
+ class AuthError < ClientError
26
+ end
27
+
28
+ # 403 Forbidden, used for database permissions
29
+ class ForbiddenError < ClientError
30
+ end
31
+
32
+ # 404 Not Found
33
+ class NotFoundError < ClientError
34
+ end
35
+
36
+ # 405 Method Not Allowed
37
+ class MethodNotAllowedError < ClientError
38
+ end
39
+
40
+ # 409 Conflict
41
+ class AlreadyExistsError < ClientError
26
42
  attr_reader :conflicts_with
27
43
  def initialize(error_message = nil, api_backtrace = nil, conflicts_with=nil)
28
44
  super(error_message, api_backtrace)
@@ -30,8 +46,16 @@ class AlreadyExistsError < APIError
30
46
  end
31
47
  end
32
48
 
33
- # 404 API errors
34
- class NotFoundError < APIError
49
+ # 415 Unsupported Media Type
50
+ class UnsupportedMediaTypeError < ClientError
51
+ end
52
+
53
+ # 422 Unprocessable Entity
54
+ class UnprocessableEntityError < ClientError
55
+ end
56
+
57
+ # 429 Too Many Requests
58
+ class TooManyRequestsError < ClientError
35
59
  end
36
60
 
37
61
  end
@@ -1,5 +1,5 @@
1
1
  module TreasureData
2
2
  class Client
3
- VERSION = '1.0.7'
3
+ VERSION = '1.0.8'
4
4
  end
5
5
  end
@@ -39,7 +39,11 @@ describe 'API SSL connection' do
39
39
  api = API.new(nil, :endpoint => "https://localhost:#{@serverport}", :retry_post_requests => false)
40
40
  api.ssl_ca_file = File.join(DIR, 'ca-all.cert')
41
41
  expect {
42
- api.delete_database('no_such_database')
42
+ begin
43
+ api.delete_database('no_such_database')
44
+ rescue Errno::ECONNRESET
45
+ raise OpenSSL::SSL::SSLError # When openssl does not support SSLv3, httpclient server will not start. For context: https://github.com/nahi/httpclient/pull/424#issuecomment-731714786
46
+ end
43
47
  }.to raise_error OpenSSL::SSL::SSLError
44
48
  end
45
49
 
@@ -52,13 +56,13 @@ describe 'API SSL connection' do
52
56
  }.to raise_error TreasureData::NotFoundError
53
57
  end
54
58
 
55
- def setup_server(ssl_version)
59
+ def setup_server(ssl_version, port = 1000 + rand(1000))
56
60
  logger = Logger.new(STDERR)
57
61
  logger.level = Logger::Severity::FATAL # avoid logging SSLError (ERROR level)
58
62
  @server = WEBrick::HTTPServer.new(
59
63
  :BindAddress => "localhost",
60
64
  :Logger => logger,
61
- :Port => 0,
65
+ :Port => port,
62
66
  :AccessLog => [],
63
67
  :DocumentRoot => '.',
64
68
  :SSLEnable => true,
@@ -46,9 +46,9 @@ describe 'Import API' do
46
46
  end
47
47
  stub_request(:put, "https://#{endpoint_import}/v3/table/import_with_id/db/table/unique_id/format").
48
48
  with(:body => '12345').
49
- to_return(:body => '{"elapsed_time":"1.23"}')
49
+ to_return(:status => 200)
50
50
  File.open(t.path) do |f|
51
- expect(api.import('db', 'table', 'format', f, 5, 'unique_id')).to eq(1.23)
51
+ expect(api.import('db', 'table', 'format', f, 5, 'unique_id')).to eq(true)
52
52
  end
53
53
  end
54
54
 
@@ -59,9 +59,9 @@ describe 'Import API' do
59
59
  end
60
60
  stub_request(:put, "https://#{endpoint_import}/v3/table/import/db/table/format").
61
61
  with(:body => '12345').
62
- to_return(:body => '{"elapsed_time":"1.23"}')
62
+ to_return(:status => 200)
63
63
  File.open(t.path) do |f|
64
- expect(api.import('db', 'table', 'format', f, 5)).to eq(1.23)
64
+ expect(api.import('db', 'table', 'format', f, 5)).to eq(true)
65
65
  end
66
66
  end
67
67
 
@@ -72,9 +72,9 @@ describe 'Import API' do
72
72
  end
73
73
  stub_request(:put, "http://#{endpoint_import_old}/v3/table/import/db/table/format").
74
74
  with(:body => '12345').
75
- to_return(:body => '{"elapsed_time":"1.23"}')
75
+ to_return(:status => 200)
76
76
  File.open(t.path) do |f|
77
- expect(api_old.import('db', 'table', 'format', f, 5)).to eq(1.23)
77
+ expect(api_old.import('db', 'table', 'format', f, 5)).to eq(true)
78
78
  end
79
79
  end
80
80
 
@@ -85,9 +85,9 @@ describe 'Import API' do
85
85
  end
86
86
  stub_request(:put, "https://#{endpoint_import}/v3/table/import/db/table/format").
87
87
  with(:body => '12345').
88
- to_return(:body => '{"elapsed_time":"1.23"}')
88
+ to_return(:status => 200)
89
89
  File.open(t.path) do |f|
90
- expect(api_default.import('db', 'table', 'format', f, 5)).to eq 1.23
90
+ expect(api_default.import('db', 'table', 'format', f, 5)).to eq true
91
91
  end
92
92
  end
93
93
 
@@ -98,9 +98,9 @@ describe 'Import API' do
98
98
  end
99
99
  stub_request(:put, "http://#{endpoint_import}/v3/table/import/db/table/format").
100
100
  with(:body => '12345').
101
- to_return(:body => '{"elapsed_time":"1.23"}')
101
+ to_return(:status => 200)
102
102
  File.open(t.path) do |f|
103
- expect(api_default_http.import('db', 'table', 'format', f, 5)).to eq 1.23
103
+ expect(api_default_http.import('db', 'table', 'format', f, 5)).to eq true
104
104
  end
105
105
  end
106
106
 
@@ -111,9 +111,9 @@ describe 'Import API' do
111
111
  end
112
112
  stub_request(:put, "https://#{endpoint_unknown}/v3/table/import/db/table/format").
113
113
  with(:body => '12345').
114
- to_return(:body => '{"elapsed_time":"1.23"}')
114
+ to_return(:status => 200)
115
115
  File.open(t.path) do |f|
116
- expect(api_unknown_host.import('db', 'table', 'format', f, 5)).to eq 1.23
116
+ expect(api_unknown_host.import('db', 'table', 'format', f, 5)).to eq true
117
117
  end
118
118
  end
119
119
 
@@ -124,9 +124,9 @@ describe 'Import API' do
124
124
  end
125
125
  stub_request(:put, "http://#{endpoint_unknown}/v3/table/import/db/table/format").
126
126
  with(:body => '12345').
127
- to_return(:body => '{"elapsed_time":"1.23"}')
127
+ to_return(:status => 200)
128
128
  File.open(t.path) do |f|
129
- expect(api_unknown_host_http.import('db', 'table', 'format', f, 5)).to eq 1.23
129
+ expect(api_unknown_host_http.import('db', 'table', 'format', f, 5)).to eq true
130
130
  end
131
131
  end
132
132
 
@@ -140,15 +140,16 @@ describe 'Job Model' do
140
140
  end
141
141
 
142
142
  it 'calls a given block in every wait_interval second' do
143
- now = 1_400_000_000
144
- allow(self).to receive(:sleep){|arg| now += arg }
145
- allow(Process).to receive(:clock_gettime){ now }
143
+ # Let's try disable stubbing #sleep for now
144
+ # now = 1_400_000_000
145
+ # allow(self).to receive(:sleep){|arg| now += arg }
146
+ # allow(Process).to receive(:clock_gettime){ now }
146
147
  expect { |b|
147
148
  begin
148
149
  thread = Thread.start {
149
- job.wait(nil, 2, &b)
150
+ job.wait(nil, 0.1, &b)
150
151
  }
151
- sleep 6
152
+ sleep 0.3
152
153
  change_job_status(Job::STATUS_SUCCESS)
153
154
  thread.join(1)
154
155
  expect(thread).to be_stop
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: 1.0.7
4
+ version: 1.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Treasure Data, Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-04 00:00:00.000000000 Z
11
+ date: 2021-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -128,6 +128,20 @@ dependencies:
128
128
  - - ">="
129
129
  - !ruby/object:Gem::Version
130
130
  version: '0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: webrick
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
131
145
  description: Treasure Data API library for Ruby
132
146
  email: support@treasure-data.com
133
147
  executables: []
@@ -183,7 +197,7 @@ homepage: http://treasuredata.com/
183
197
  licenses:
184
198
  - Apache-2.0
185
199
  metadata: {}
186
- post_install_message:
200
+ post_install_message:
187
201
  rdoc_options: []
188
202
  require_paths:
189
203
  - lib
@@ -198,29 +212,29 @@ required_rubygems_version: !ruby/object:Gem::Requirement
198
212
  - !ruby/object:Gem::Version
199
213
  version: '0'
200
214
  requirements: []
201
- rubygems_version: 3.0.0.beta3
202
- signing_key:
215
+ rubygems_version: 3.0.9
216
+ signing_key:
203
217
  specification_version: 4
204
218
  summary: Treasure Data API library for Ruby
205
219
  test_files:
206
- - spec/td/client/account_api_spec.rb
207
- - spec/td/client/api_error_spec.rb
220
+ - spec/td/client_spec.rb
221
+ - spec/td/client_sched_spec.rb
222
+ - spec/td/client/partial_delete_api_spec.rb
208
223
  - spec/td/client/api_spec.rb
209
- - spec/td/client/api_ssl_connection_spec.rb
210
- - spec/td/client/bulk_import_spec.rb
211
- - spec/td/client/bulk_load_spec.rb
212
224
  - spec/td/client/db_api_spec.rb
225
+ - spec/td/client/result_api_spec.rb
213
226
  - spec/td/client/export_api_spec.rb
214
- - spec/td/client/import_api_spec.rb
215
- - spec/td/client/job_api_spec.rb
216
- - spec/td/client/model_job_spec.rb
217
- - spec/td/client/model_schedule_spec.rb
218
227
  - spec/td/client/model_schema_spec.rb
219
- - spec/td/client/partial_delete_api_spec.rb
220
- - spec/td/client/result_api_spec.rb
228
+ - spec/td/client/api_error_spec.rb
221
229
  - spec/td/client/sched_api_spec.rb
222
- - spec/td/client/server_status_api_spec.rb
223
230
  - spec/td/client/table_api_spec.rb
231
+ - spec/td/client/bulk_load_spec.rb
232
+ - spec/td/client/api_ssl_connection_spec.rb
233
+ - spec/td/client/job_api_spec.rb
234
+ - spec/td/client/account_api_spec.rb
224
235
  - spec/td/client/user_api_spec.rb
225
- - spec/td/client_sched_spec.rb
226
- - spec/td/client_spec.rb
236
+ - spec/td/client/bulk_import_spec.rb
237
+ - spec/td/client/model_schedule_spec.rb
238
+ - spec/td/client/import_api_spec.rb
239
+ - spec/td/client/server_status_api_spec.rb
240
+ - spec/td/client/model_job_spec.rb