embulk-input-zendesk 0.1.4 → 0.1.5

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: 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: