embulk-input-kintone 0.1.2 → 0.1.3
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 69c23aa1d03cb2ccfd39918eda208847ed5dcf11
|
4
|
+
data.tar.gz: 1c24d9b3210d4e30d2c23b48ddb08e2b8f515e2d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 632505db9038c63988f56c8ec4bc961cc11ba28f8e2320a1f22228add31be29ca0df913337ccc786fdfa86cb93e4f4a386cd85aeee53e7352ba2abc86de3b468
|
7
|
+
data.tar.gz: c858872b535a14af20adb30023388c7d3acb03159b3c4d7d4db547d45e15f17eca76eb68bb853b0742e13de0b63eb93e2595fca279610d46aa91be37b2949766
|
data/README.md
CHANGED
@@ -1,10 +1,13 @@
|
|
1
|
-
#
|
1
|
+
# kintone input plugin for Embulk
|
2
2
|
[](https://travis-ci.org/trocco-io/embulk-input-kintone)
|
3
3
|
|
4
4
|
## Overview
|
5
|
-
|
5
|
+
kintone input plugin for Embulk loads app records from kintone.
|
6
6
|
embulk 0.9 is only supported due to the dependency of kintone-java-sdk 0.4.0, which requires java 8
|
7
7
|
|
8
|
+
This plugin uses [cursor API](https://developer.kintone.io/hc/en-us/articles/360000280322). See the limitation on this page.
|
9
|
+
e.g. limit, offset are not supported.
|
10
|
+
|
8
11
|
* **Plugin type**: input
|
9
12
|
* **Resume supported**: no
|
10
13
|
* **Cleanup supported**: no
|
@@ -32,7 +35,7 @@ embulk 0.9 is only supported due to the dependency of kintone-java-sdk 0.4.0, wh
|
|
32
35
|
- **type** Column values are converted to this embulk type. Available values options are: boolean, long, double, string, json, timestamp)
|
33
36
|
- **format** Format of the timestamp if type is timestamp. The format for kintone DATETIME is `%Y-%m-%dT%H:%M:%S%z`.
|
34
37
|
|
35
|
-
|
38
|
+
kintone API has the limitation, therefore this plugin also faces it. See [official documentation](https://developer.kintone.io/hc/en-us/articles/212495188/)
|
36
39
|
|
37
40
|
## Example
|
38
41
|
|
@@ -60,7 +63,7 @@ in:
|
|
60
63
|
username: user
|
61
64
|
password: password
|
62
65
|
app_id: 1
|
63
|
-
query: Time > 10:00 and Time < 19:00 and Created_datatime = TODAY() order by $id asc
|
66
|
+
query: Time > 10:00 and Time < 19:00 and Created_datatime = TODAY() order by $id asc
|
64
67
|
fields:
|
65
68
|
- {name: $id, type: long}
|
66
69
|
- {name: $revision, type: long}
|
data/build.gradle
CHANGED
@@ -2,11 +2,12 @@ package org.embulk.input.kintone;
|
|
2
2
|
|
3
3
|
import com.cybozu.kintone.client.authentication.Auth;
|
4
4
|
import com.cybozu.kintone.client.connection.Connection;
|
5
|
+
import com.cybozu.kintone.client.exception.KintoneAPIException;
|
6
|
+
import com.cybozu.kintone.client.model.cursor.CreateRecordCursorResponse;
|
5
7
|
import com.cybozu.kintone.client.model.record.GetRecordsResponse;
|
6
|
-
import com.cybozu.kintone.client.module.
|
8
|
+
import com.cybozu.kintone.client.module.recordCursor.RecordCursor;
|
7
9
|
import org.embulk.config.ConfigException;
|
8
|
-
import org.embulk.spi
|
9
|
-
|
10
|
+
import org.embulk.spi.ColumnConfig;
|
10
11
|
import org.slf4j.Logger;
|
11
12
|
import org.slf4j.LoggerFactory;
|
12
13
|
|
@@ -14,9 +15,11 @@ import java.util.ArrayList;
|
|
14
15
|
|
15
16
|
public class KintoneClient {
|
16
17
|
private final Logger logger = LoggerFactory.getLogger(KintoneClient.class);
|
18
|
+
private static final int FETCH_SIZE = 500;
|
17
19
|
private Auth kintoneAuth;
|
18
|
-
private
|
20
|
+
private RecordCursor kintoneRecordManager;
|
19
21
|
private Connection con;
|
22
|
+
private CreateRecordCursorResponse cursor;
|
20
23
|
|
21
24
|
public KintoneClient(){
|
22
25
|
this.kintoneAuth = new Auth();
|
@@ -49,7 +52,7 @@ public class KintoneClient {
|
|
49
52
|
} else {
|
50
53
|
this.con = new Connection(task.getDomain(), this.kintoneAuth);
|
51
54
|
}
|
52
|
-
this.kintoneRecordManager = new
|
55
|
+
this.kintoneRecordManager = new RecordCursor(con);
|
53
56
|
}
|
54
57
|
|
55
58
|
|
@@ -60,11 +63,22 @@ public class KintoneClient {
|
|
60
63
|
fields.add(c.getName());
|
61
64
|
}
|
62
65
|
try {
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
+
this.cursor = this.kintoneRecordManager.createCursor(task.getAppId(),
|
67
|
+
fields, task.getQuery().or(""), FETCH_SIZE);
|
68
|
+
return this.kintoneRecordManager.getAllRecords(cursor.getId());
|
69
|
+
}catch (KintoneAPIException e){
|
70
|
+
if (this.cursor != null) {
|
71
|
+
this.deleteCursor();
|
72
|
+
}
|
66
73
|
throw new RuntimeException(e);
|
67
74
|
}
|
68
75
|
}
|
69
76
|
|
77
|
+
public void deleteCursor() {
|
78
|
+
try {
|
79
|
+
this.kintoneRecordManager.deleteCursor(this.cursor.getId());
|
80
|
+
}catch (KintoneAPIException e){
|
81
|
+
this.logger.error(e.toString());
|
82
|
+
}
|
83
|
+
}
|
70
84
|
}
|
@@ -1,21 +1,19 @@
|
|
1
1
|
package org.embulk.input.kintone;
|
2
2
|
|
3
|
-
import java.util.HashMap;
|
4
|
-
import java.util.List;
|
5
|
-
|
6
|
-
import com.google.common.annotations.VisibleForTesting;
|
7
|
-
import org.embulk.config.*;
|
8
|
-
import org.embulk.spi.Exec;
|
9
|
-
import org.embulk.spi.PageBuilder;
|
10
|
-
import org.embulk.spi.InputPlugin;
|
11
|
-
import org.embulk.spi.Schema;
|
12
|
-
import org.embulk.spi.PageOutput;
|
13
|
-
|
14
|
-
import com.cybozu.kintone.client.model.record.field.FieldValue;
|
15
3
|
import com.cybozu.kintone.client.model.record.GetRecordsResponse;
|
4
|
+
import com.cybozu.kintone.client.model.record.field.FieldValue;
|
5
|
+
import com.google.common.annotations.VisibleForTesting;
|
6
|
+
import org.embulk.config.ConfigDiff;
|
7
|
+
import org.embulk.config.ConfigSource;
|
8
|
+
import org.embulk.config.TaskReport;
|
9
|
+
import org.embulk.config.TaskSource;
|
10
|
+
import org.embulk.spi.*;
|
16
11
|
import org.slf4j.Logger;
|
17
12
|
import org.slf4j.LoggerFactory;
|
18
13
|
|
14
|
+
import java.util.HashMap;
|
15
|
+
import java.util.List;
|
16
|
+
|
19
17
|
public class KintoneInputPlugin
|
20
18
|
implements InputPlugin {
|
21
19
|
private final Logger logger = LoggerFactory.getLogger(KintoneInputPlugin.class);
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: embulk-input-kintone
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- giwa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-11-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -50,7 +50,7 @@ files:
|
|
50
50
|
- LICENSE.txt
|
51
51
|
- README.md
|
52
52
|
- build.gradle
|
53
|
-
- classpath/embulk-input-kintone-0.1.
|
53
|
+
- classpath/embulk-input-kintone-0.1.3.jar
|
54
54
|
- classpath/gson-2.8.2.jar
|
55
55
|
- classpath/kintone-sdk-0.4.0.jar
|
56
56
|
- config/checkstyle/checkstyle.xml
|