embulk-input-zendesk 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dd6da90d8ce5a50d324d5d0d4e3016b151ebcdde
4
- data.tar.gz: adff4881ad79e42236e68f6245cf0ab15dd16463
3
+ metadata.gz: bdd23bdf56e325f692e469316f07d92a9173727b
4
+ data.tar.gz: d70d14895b9e26f7f57b03c1b56cb5ac1382b755
5
5
  SHA512:
6
- metadata.gz: fbf47f6f6f96ab00bf2642c313b3829a3a85356e339bd65cb32e26bfa847a5e57200dafc31fa1b47b76b8828bd34b94a8d9baafca0f40c285b3a31d0504d63cd
7
- data.tar.gz: eb56a55ecf3d7ddb5dc2785a63e3daa7909267a0bac1c7ed52f2fce80e4103d8a74bac9d3dcc631c49f8436252e80f7dd82fed64fa4f9bb6049577594868ebe5
6
+ metadata.gz: 2b6fb9f91fa3d5f58b8c3ad270084dc81c1dd76c14578461932a1f0ad5453f7c05649d4cc62d74c8053c543e084fe6ae2e90871d490591cd6216f3f16aebac7a
7
+ data.tar.gz: 5ef68347436a5d175377cdf2c1c27ff8cefdce8ee73e2f97c4aae14bd08fa54d180569035aa714b83ee19f37f474147905d28fb7260fbbfd29908623b12d8c82
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 0.1.5 - 2016-04-14
2
+ * [enhancement] Mitigate debug pain when many retry then error [#10](https://github.com/treasure-data/embulk-input-zendesk/pull/10)
3
+
1
4
  ## 0.1.4 - 2016-04-08
2
5
 
3
6
  * [enhancement] Correct preview data [#9](https://github.com/treasure-data/embulk-input-zendesk/pull/9)
@@ -1,7 +1,7 @@
1
1
 
2
2
  Gem::Specification.new do |spec|
3
3
  spec.name = "embulk-input-zendesk"
4
- spec.version = "0.1.4"
4
+ spec.version = "0.1.5"
5
5
  spec.authors = ["uu59", "muga", "sakama"]
6
6
  spec.summary = "Zendesk input plugin for Embulk"
7
7
  spec.description = "Loads records from Zendesk."
@@ -13,7 +13,7 @@ Gem::Specification.new do |spec|
13
13
  spec.test_files = spec.files.grep(%r{^(test|spec)/})
14
14
  spec.require_paths = ["lib"]
15
15
 
16
- spec.add_dependency 'perfect_retry', '~> 0.4'
16
+ spec.add_dependency 'perfect_retry', '~> 0.5'
17
17
  spec.add_dependency 'httpclient'
18
18
  spec.add_development_dependency 'embulk', ['~> 0.8.1']
19
19
  spec.add_development_dependency 'bundler', ['~> 1.0']
@@ -150,6 +150,7 @@ module Embulk
150
150
  config.log_level = nil
151
151
  config.dont_rescues = [Embulk::DataError, Embulk::ConfigError]
152
152
  config.sleep = lambda{|n| @config[:retry_initial_wait_sec]* (2 ** (n-1)) }
153
+ config.raise_original_error = true
153
154
  end
154
155
  end
155
156
 
@@ -251,14 +252,15 @@ module Embulk
251
252
  case status_code
252
253
  when 200, 404
253
254
  # 404 would be returned e.g. ticket comments are empty (on fetch_subresource method)
254
- when 400, 401
255
- raise Embulk::ConfigError.new("[#{status_code}] #{body}")
256
255
  when 409
257
256
  raise "[#{status_code}] temporally failure."
258
257
  when 429
259
258
  # rate limit
260
259
  retry_after = headers["Retry-After"]
261
260
  wait_rate_limit(retry_after.to_i)
261
+ when 400..500
262
+ # Won't retry for 4xx range errors except above. Almost they should be ConfigError e.g. 403 Forbidden
263
+ raise Embulk::ConfigError.new("[#{status_code}] #{body}")
262
264
  when 500, 503
263
265
  # 503 is possible rate limit
264
266
  retry_after = headers["Retry-After"]
@@ -268,7 +270,7 @@ module Embulk
268
270
  raise "[#{status_code}] temporally failure."
269
271
  end
270
272
  else
271
- raise "Server returns unknown status code (#{status_code})"
273
+ raise "Server returns unknown status code (#{status_code}) #{body}"
272
274
  end
273
275
  end
274
276
  end
@@ -316,13 +316,13 @@ module Embulk
316
316
  @client ||= Client.new(login_url: login_url, auth_method: "oauth", access_token: access_token, retry_limit: 2, retry_initial_wait_sec: 0)
317
317
  end
318
318
 
319
- def stub_response(status, headers = [])
319
+ def stub_response(status, headers = [], body_json = nil)
320
+ headers << "Content-Type: application/json"
320
321
  @httpclient.test_loopback_http_response << [
321
322
  "HTTP/1.1 #{status}",
322
- "Content-Type: application/json",
323
323
  headers.join("\r\n"),
324
324
  "",
325
- {
325
+ body_json || {
326
326
  tickets: []
327
327
  }.to_json
328
328
  ].join("\r\n")
@@ -351,6 +351,13 @@ module Embulk
351
351
  end
352
352
  end
353
353
 
354
+ test "403 forbidden" do
355
+ stub_response(403)
356
+ assert_raise(ConfigError) do
357
+ client.tickets(&proc{})
358
+ end
359
+ end
360
+
354
361
  test "409" do
355
362
  stub_response(409)
356
363
  assert_raise(StandardError) do
@@ -391,8 +398,9 @@ module Embulk
391
398
  end
392
399
 
393
400
  test "Unhandled response code (555)" do
394
- stub_response(555)
395
- assert_raise(RuntimeError.new("Server returns unknown status code (555)")) do
401
+ error_body = {error: "FATAL ERROR"}.to_json
402
+ stub_response(555, [], error_body)
403
+ assert_raise(RuntimeError.new("Server returns unknown status code (555) #{error_body}")) do
396
404
  client.tickets(&proc{})
397
405
  end
398
406
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-input-zendesk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - uu59
@@ -10,14 +10,14 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-04-08 00:00:00.000000000 Z
13
+ date: 2016-04-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '0.4'
20
+ version: '0.5'
21
21
  name: perfect_retry
22
22
  prerelease: false
23
23
  type: :runtime
@@ -25,7 +25,7 @@ dependencies:
25
25
  requirements:
26
26
  - - "~>"
27
27
  - !ruby/object:Gem::Version
28
- version: '0.4'
28
+ version: '0.5'
29
29
  - !ruby/object:Gem::Dependency
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements: