embulk-input-zendesk 0.1.7 → 0.1.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 +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +1 -1
- data/embulk-input-zendesk.gemspec +1 -1
- data/lib/embulk/input/zendesk/client.rb +26 -21
- data/test/embulk/input/zendesk/test_plugin.rb +7 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eaddbf9ca58a72b5bb9e00497f7eef3c3303e171
|
4
|
+
data.tar.gz: 4a13d21ceff5b8d019f43d9c98ea4f0dac59840c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe9134f35bc6d9d0a303f103c7d85ac017eb43a2c2db662c8ae7d18bac85afaed44572cefa6c6fab21ac1c5f6a35861ee61088edcac72421b2fb018844bf3e96
|
7
|
+
data.tar.gz: 3933f732fd8f073fc52f9ce44962a7e9b8ce6ba248e77d9c45cf1468093ded9f21a0092cb29e7c9b7b779bf820211388f9c0365412e10f52768cfc19dc341a7e
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## 0.1.8 - 2016-07-11
|
2
|
+
|
3
|
+
* [enhancement] For huge data [#13](https://github.com/treasure-data/embulk-input-zendesk/pull/13)
|
4
|
+
* [enhancement] Improvements for non incremental export [#12](https://github.com/treasure-data/embulk-input-zendesk/pull/12)
|
5
|
+
|
1
6
|
## 0.1.7 - 2016-06-04
|
2
7
|
* [enhancement] Improvements for non incremental export [#12](https://github.com/treasure-data/embulk-input-zendesk/pull/12)
|
3
8
|
|
data/README.md
CHANGED
@@ -30,7 +30,7 @@ Required Embulk version >= 0.8.1.
|
|
30
30
|
- **access_token**: OAuth Access Token. required if `auth_method` is `oauth`. (string, default: `null`)
|
31
31
|
- **start_time**: Start export from this time if present. (string, default: `null`)
|
32
32
|
- **retry_limit**: Try to retry this times (integer, default: 5)
|
33
|
-
- **retry_initial_wait_sec**: Wait seconds for exponential backoff initial value (integer, default:
|
33
|
+
- **retry_initial_wait_sec**: Wait seconds for exponential backoff initial value (integer, default: 4)
|
34
34
|
- **incremental**: If false, `start_time` in next.yml would not be updated that means you always fetch all of data from Zendesk with statically conditions. If true, `start_time` would be updated in next.yml. (bool, default: true)
|
35
35
|
|
36
36
|
## Example
|
@@ -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.8"
|
5
5
|
spec.authors = ["uu59", "muga", "sakama"]
|
6
6
|
spec.summary = "Zendesk input plugin for Embulk"
|
7
7
|
spec.description = "Loads records from Zendesk."
|
@@ -20,6 +20,7 @@ module Embulk
|
|
20
20
|
|
21
21
|
def httpclient
|
22
22
|
httpclient = HTTPClient.new
|
23
|
+
httpclient.connect_timeout = 240 # default:60 is not enough for huge data
|
23
24
|
# httpclient.debug_dev = STDOUT
|
24
25
|
return set_auth(httpclient)
|
25
26
|
end
|
@@ -162,35 +163,39 @@ module Embulk
|
|
162
163
|
def incremental_export(path, key, start_time = 0, known_ids = [], partial = true, &block)
|
163
164
|
if partial
|
164
165
|
records = request_partial(path, {start_time: start_time}).first(5)
|
165
|
-
|
166
|
+
records.uniq{|r| r["id"]}.each do |record|
|
167
|
+
block.call record
|
168
|
+
end
|
169
|
+
return
|
170
|
+
end
|
171
|
+
|
172
|
+
loop do
|
173
|
+
start_fetching = Time.now
|
166
174
|
response = request(path, {start_time: start_time})
|
167
175
|
begin
|
168
176
|
data = JSON.parse(response.body)
|
169
177
|
rescue => e
|
170
178
|
raise Embulk::DataError.new(e)
|
171
179
|
end
|
172
|
-
|
180
|
+
actual_fetched = 0
|
173
181
|
records = data[key]
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
182
|
+
records.each do |record|
|
183
|
+
# de-duplicated records.
|
184
|
+
# https://developer.zendesk.com/rest_api/docs/core/incremental_export#usage-notes
|
185
|
+
# https://github.com/zendesk/zendesk_api_client_rb/issues/251
|
186
|
+
next if known_ids.include?(record["id"])
|
187
|
+
|
188
|
+
known_ids << record["id"]
|
189
|
+
block.call record
|
190
|
+
actual_fetched += 1
|
191
|
+
end
|
192
|
+
Embulk.logger.info "Fetched #{actual_fetched} records from start_time:#{start_time} (#{Time.at(start_time)}) within #{Time.now.to_i - start_fetching.to_i} seconds"
|
193
|
+
start_time = data["end_time"]
|
186
194
|
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
incremental_export(path, key, data["end_time"], known_ids, partial, &block)
|
192
|
-
else
|
193
|
-
data
|
195
|
+
# NOTE: If count is less than 1000, then stop paginating.
|
196
|
+
# Otherwise, use the next_page URL to get the next page of results.
|
197
|
+
# https://developer.zendesk.com/rest_api/docs/core/incremental_export#pagination
|
198
|
+
break data if data["count"] < 1000
|
194
199
|
end
|
195
200
|
end
|
196
201
|
|
@@ -375,12 +375,14 @@ module Embulk
|
|
375
375
|
"Content-Type: application/json",
|
376
376
|
"",
|
377
377
|
{
|
378
|
-
tickets: tickets
|
378
|
+
tickets: tickets,
|
379
|
+
count: tickets.length,
|
379
380
|
}.to_json
|
380
381
|
].join("\r\n")
|
381
382
|
|
382
383
|
tickets.each do |ticket|
|
383
|
-
|
384
|
+
# schema[:columns] is id and tags. tags should be nil
|
385
|
+
mock(page_builder).add([ticket["id"], nil])
|
384
386
|
end
|
385
387
|
mock(page_builder).finish
|
386
388
|
|
@@ -413,6 +415,7 @@ module Embulk
|
|
413
415
|
{
|
414
416
|
ticket_events: events,
|
415
417
|
end_time: end_time,
|
418
|
+
count: events.length,
|
416
419
|
}.to_json
|
417
420
|
].join("\r\n")
|
418
421
|
stub(page_builder).add(anything)
|
@@ -452,7 +455,8 @@ module Embulk
|
|
452
455
|
"Content-Type: application/json",
|
453
456
|
"",
|
454
457
|
{
|
455
|
-
tickets: data
|
458
|
+
tickets: data,
|
459
|
+
count: data.length,
|
456
460
|
}.to_json
|
457
461
|
].join("\r\n")
|
458
462
|
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.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- uu59
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-
|
13
|
+
date: 2016-07-11 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|