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 +4 -4
- data/CHANGELOG.md +3 -0
- data/embulk-input-zendesk.gemspec +2 -2
- data/lib/embulk/input/zendesk/client.rb +5 -3
- data/test/embulk/input/zendesk/test_client.rb +13 -5
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bdd23bdf56e325f692e469316f07d92a9173727b
|
4
|
+
data.tar.gz: d70d14895b9e26f7f57b03c1b56cb5ac1382b755
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
+
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.
|
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
|
-
|
395
|
-
|
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
|
+
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-
|
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.
|
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.
|
28
|
+
version: '0.5'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|