embulk-input-kintone 0.1.0 → 0.1.1
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/README.md +8 -2
- data/build.gradle +5 -3
- data/gradle/wrapper/gradle-wrapper.properties +2 -1
- data/src/main/java/org/embulk/input/kintone/KintoneAccessor.java +4 -2
- data/src/main/java/org/embulk/input/kintone/KintoneClient.java +16 -16
- data/src/main/java/org/embulk/input/kintone/KintoneInputPlugin.java +3 -7
- data/src/test/java/org/embulk/input/kintone/TestKintoneAccessor.java +94 -0
- data/src/test/java/org/embulk/input/kintone/TestKintoneClient.java +75 -0
- data/src/test/java/org/embulk/input/kintone/TestKintoneInputPlugin.java +37 -2
- data/src/test/resources/org/embulk/input/kintone/base.yml +9 -0
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68954eaff6b8344ffcddf296dfaf47a73882a315
|
4
|
+
data.tar.gz: '0587da14d8658b81f0f94ed9a2f26475eb2c5595'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 941e7ed35a81853b42e41da31d78dd0afb3ccf8a27f4f1f6b23e4308caca10f36d705802eaf9d3a21a902f94a4dde3a9548cc519d524b360bfb842a59d2c7337
|
7
|
+
data.tar.gz: 48a62cd9aeccf5d307a971a1da9f9e38a350513569be5a3a5218128b3418b6c4414f3a889450f027b9a3272bc90f8a337144571379d41e175c812e7ccf366ca7
|
data/README.md
CHANGED
@@ -27,7 +27,7 @@ embulk 0.9 is only supported due to the dependency of kintone-java-sdk 0.4.0, wh
|
|
27
27
|
- **basic_auth_username**: Kintone basic auth username Please see Kintone basic auth [here](https://jp.cybozu.help/general/en/admin/list_security/list_ip_basic/basic_auth.html) (string, optional)
|
28
28
|
- **basic_auth_password**: Kintone basic auth password (string, optional)
|
29
29
|
- **guest_space_id**: Kintone app belongs to guest space, guest space id is required. (integer, optional)
|
30
|
-
- **fields**
|
30
|
+
- **fields** (required)
|
31
31
|
- **name** the field code of Kintone app record will be retrieved.
|
32
32
|
- **type** Column values are converted to this embulk type. Available values options are: boolean, long, double, string, json, timestamp)
|
33
33
|
|
@@ -64,7 +64,7 @@ in:
|
|
64
64
|
- {name: $id, type: long}
|
65
65
|
- {name: $revision, type: long}
|
66
66
|
- {name: Time, type: string}
|
67
|
-
- {name: Created_datatime, type:
|
67
|
+
- {name: Created_datatime, type: string}
|
68
68
|
- {name: foo, type: string}
|
69
69
|
```
|
70
70
|
|
@@ -73,3 +73,9 @@ in:
|
|
73
73
|
```
|
74
74
|
$ ./gradlew gem # -t to watch change of files and rebuild continuously
|
75
75
|
```
|
76
|
+
|
77
|
+
## Development
|
78
|
+
```
|
79
|
+
$ ./gradew build
|
80
|
+
$ ./gradew test
|
81
|
+
```
|
data/build.gradle
CHANGED
@@ -13,7 +13,7 @@ configurations {
|
|
13
13
|
provided
|
14
14
|
}
|
15
15
|
|
16
|
-
version = "0.1.
|
16
|
+
version = "0.1.1"
|
17
17
|
|
18
18
|
sourceCompatibility = 1.8
|
19
19
|
targetCompatibility = 1.8
|
@@ -22,8 +22,10 @@ dependencies {
|
|
22
22
|
compile "org.embulk:embulk-core:0.9.12"
|
23
23
|
provided "org.embulk:embulk-core:0.9.12"
|
24
24
|
compile group: 'com.cybozu.kintone', name: 'kintone-sdk', version: '0.4.0'
|
25
|
-
|
25
|
+
|
26
26
|
testCompile "junit:junit:4.+"
|
27
|
+
testCompile 'org.embulk:embulk-standards:0.9.12'
|
28
|
+
testCompile 'org.embulk:embulk-test:0.9.12'
|
27
29
|
}
|
28
30
|
|
29
31
|
task classpath(type: Copy, dependsOn: ["jar"]) {
|
@@ -83,7 +85,7 @@ Gem::Specification.new do |spec|
|
|
83
85
|
spec.description = %[Loads records from Kintone.]
|
84
86
|
spec.email = ["ugw.gi.world@gmail.com"]
|
85
87
|
spec.licenses = ["MIT"]
|
86
|
-
|
88
|
+
spec.homepage = "https://github.com/trocco-io/embulk-input-kintone"
|
87
89
|
|
88
90
|
spec.files = `git ls-files`.split("\n") + Dir["classpath/*.jar"]
|
89
91
|
spec.test_files = spec.files.grep(%r"^(test|spec)/")
|
@@ -1,5 +1,6 @@
|
|
1
|
+
#Fri Oct 11 16:04:33 JST 2019
|
1
2
|
distributionBase=GRADLE_USER_HOME
|
2
3
|
distributionPath=wrapper/dists
|
3
4
|
zipStoreBase=GRADLE_USER_HOME
|
4
5
|
zipStorePath=wrapper/dists
|
5
|
-
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-
|
6
|
+
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
|
@@ -26,7 +26,7 @@ public class KintoneAccessor {
|
|
26
26
|
case GROUP_SELECT:
|
27
27
|
case STATUS_ASSIGNEE:
|
28
28
|
ArrayList<Member> members = (ArrayList<Member>) this.record.get(name).getValue();
|
29
|
-
return members.stream().map(
|
29
|
+
return members.stream().map(Member::getCode)
|
30
30
|
.reduce((accum, value) -> accum + this.delimiter + value)
|
31
31
|
.orElse("");
|
32
32
|
case SUBTABLE:
|
@@ -45,9 +45,11 @@ public class KintoneAccessor {
|
|
45
45
|
.orElse("");
|
46
46
|
case FILE:
|
47
47
|
ArrayList<FileModel> cbFileList = (ArrayList<FileModel>) this.record.get(name).getValue();
|
48
|
-
return cbFileList.stream().map(
|
48
|
+
return cbFileList.stream().map(FileModel::getFileKey)
|
49
49
|
.reduce((accum, value) -> accum + this.delimiter + value)
|
50
50
|
.orElse("");
|
51
|
+
case NUMBER:
|
52
|
+
return String.valueOf(this.record.get(name).getValue());
|
51
53
|
default:
|
52
54
|
return (String) this.record.get(name).getValue();
|
53
55
|
}
|
@@ -14,49 +14,49 @@ import java.util.ArrayList;
|
|
14
14
|
|
15
15
|
public class KintoneClient {
|
16
16
|
private final Logger logger = LoggerFactory.getLogger(KintoneClient.class);
|
17
|
-
private final PluginTask
|
17
|
+
private final PluginTask task;
|
18
18
|
private ArrayList<String> fields;
|
19
19
|
private Auth kintoneAuth;
|
20
20
|
private Record kintoneRecordManager;
|
21
21
|
private Connection con;
|
22
22
|
|
23
|
-
public KintoneClient(final PluginTask
|
24
|
-
this.
|
23
|
+
public KintoneClient(final PluginTask task) {
|
24
|
+
this.task = task;
|
25
25
|
this.kintoneAuth = new Auth();
|
26
26
|
|
27
|
-
this.fields = new ArrayList
|
28
|
-
for (ColumnConfig c :
|
27
|
+
this.fields = new ArrayList<>();
|
28
|
+
for (ColumnConfig c : task.getFields().getColumns()
|
29
29
|
) {
|
30
30
|
fields.add(c.getName());
|
31
31
|
}
|
32
32
|
this.setAuth();
|
33
|
-
if (
|
34
|
-
this.con = new Connection(
|
33
|
+
if (task.getGuestSpaceId().isPresent()) {
|
34
|
+
this.con = new Connection(task.getDomain(), this.kintoneAuth, task.getGuestSpaceId().or(-1));
|
35
35
|
} else {
|
36
|
-
this.con = new Connection(
|
36
|
+
this.con = new Connection(task.getDomain(), this.kintoneAuth);
|
37
37
|
}
|
38
38
|
this.kintoneRecordManager = new Record(con);
|
39
39
|
}
|
40
40
|
|
41
41
|
private void setAuth() {
|
42
|
-
if (
|
43
|
-
this.kintoneAuth.setPasswordAuth(
|
44
|
-
} else if (
|
45
|
-
this.kintoneAuth.setApiToken(
|
42
|
+
if (task.getUsername().isPresent() && task.getPassword().isPresent()) {
|
43
|
+
this.kintoneAuth.setPasswordAuth(task.getUsername().get(), task.getPassword().get());
|
44
|
+
} else if (task.getToken().isPresent()) {
|
45
|
+
this.kintoneAuth.setApiToken(task.getToken().get());
|
46
46
|
} else {
|
47
47
|
throw new ConfigException("Username and password or token must be provided");
|
48
48
|
}
|
49
49
|
|
50
|
-
if (
|
51
|
-
this.kintoneAuth.setBasicAuth(
|
52
|
-
|
50
|
+
if (task.getBasicAuthUsername().isPresent() && task.getBasicAuthPassword().isPresent()) {
|
51
|
+
this.kintoneAuth.setBasicAuth(task.getBasicAuthUsername().get(),
|
52
|
+
task.getBasicAuthPassword().get());
|
53
53
|
}
|
54
54
|
}
|
55
55
|
|
56
56
|
public GetRecordsResponse getResponse() {
|
57
57
|
try {
|
58
58
|
return kintoneRecordManager.getAllRecordsByQuery(
|
59
|
-
this.
|
59
|
+
this.task.getAppId(), this.task.getQuery().or(""), this.fields);
|
60
60
|
} catch (Exception e) {
|
61
61
|
throw new RuntimeException(e);
|
62
62
|
}
|
@@ -3,10 +3,7 @@ package org.embulk.input.kintone;
|
|
3
3
|
import java.util.HashMap;
|
4
4
|
import java.util.List;
|
5
5
|
|
6
|
-
import org.embulk.config
|
7
|
-
import org.embulk.config.ConfigSource;
|
8
|
-
import org.embulk.config.TaskReport;
|
9
|
-
import org.embulk.config.TaskSource;
|
6
|
+
import org.embulk.config.*;
|
10
7
|
import org.embulk.spi.Exec;
|
11
8
|
import org.embulk.spi.PageBuilder;
|
12
9
|
import org.embulk.spi.InputPlugin;
|
@@ -56,7 +53,6 @@ public class KintoneInputPlugin
|
|
56
53
|
try {
|
57
54
|
try (PageBuilder pageBuilder = new PageBuilder(Exec.getBufferAllocator(), schema, output)) {
|
58
55
|
KintoneClient client = new KintoneClient(task);
|
59
|
-
// TODO: interface should accept query?
|
60
56
|
GetRecordsResponse response = client.getResponse();
|
61
57
|
for (HashMap<String, FieldValue> record : response.getRecords()) {
|
62
58
|
schema.visitColumns(new KintoneInputColumnVisitor(new KintoneAccessor(record), pageBuilder, task));
|
@@ -65,8 +61,8 @@ public class KintoneInputPlugin
|
|
65
61
|
pageBuilder.finish();
|
66
62
|
}
|
67
63
|
} catch (Exception e) {
|
68
|
-
|
69
|
-
|
64
|
+
logger.error(e.getMessage());
|
65
|
+
throw e;
|
70
66
|
}
|
71
67
|
return Exec.newTaskReport();
|
72
68
|
}
|
@@ -0,0 +1,94 @@
|
|
1
|
+
package org.embulk.input.kintone;
|
2
|
+
|
3
|
+
|
4
|
+
import com.cybozu.kintone.client.model.app.form.FieldType;
|
5
|
+
import com.cybozu.kintone.client.model.record.field.FieldValue;
|
6
|
+
import com.cybozu.kintone.client.model.member.Member;
|
7
|
+
import org.junit.Test;
|
8
|
+
|
9
|
+
import java.util.ArrayList;
|
10
|
+
import java.util.HashMap;
|
11
|
+
|
12
|
+
import static org.junit.Assert.*;
|
13
|
+
|
14
|
+
|
15
|
+
public class TestKintoneAccessor {
|
16
|
+
private static Member testman1 = new Member("code1", "name1");
|
17
|
+
private static Member testman2 = new Member("code2", "name2");
|
18
|
+
private static Member testgroup1 = new Member("code3", "name3");
|
19
|
+
private static Member testgroup2 = new Member("code4", "name4");
|
20
|
+
private static Member testorg1 = new Member("code5", "name5");
|
21
|
+
private static Member testorg2 = new Member("code6", "name6");
|
22
|
+
private Integer uniqueKey = 1;
|
23
|
+
|
24
|
+
public HashMap<String, FieldValue> createTestRecord() {
|
25
|
+
HashMap<String, FieldValue> testRecord = new HashMap<>();
|
26
|
+
|
27
|
+
testRecord = addField(testRecord, "文字列__1行", FieldType.SINGLE_LINE_TEXT, "test single text");
|
28
|
+
testRecord = addField(testRecord, "数値", FieldType.NUMBER, this.uniqueKey);
|
29
|
+
this.uniqueKey += 1;
|
30
|
+
testRecord = addField(testRecord, "文字列__複数行", FieldType.MULTI_LINE_TEXT, "test multi text");
|
31
|
+
testRecord = addField(testRecord, "リッチエディター", FieldType.RICH_TEXT, "<div>test rich text<br /></div>");
|
32
|
+
|
33
|
+
ArrayList<String> selectedItemList = new ArrayList<>();
|
34
|
+
selectedItemList.add("sample1");
|
35
|
+
selectedItemList.add("sample2");
|
36
|
+
testRecord = addField(testRecord, "チェックボックス", FieldType.CHECK_BOX, selectedItemList);
|
37
|
+
testRecord = addField(testRecord, "ラジオボタン", FieldType.RADIO_BUTTON, "sample2");
|
38
|
+
testRecord = addField(testRecord, "ドロップダウン", FieldType.DROP_DOWN, "sample3");
|
39
|
+
testRecord = addField(testRecord, "複数選択", FieldType.MULTI_SELECT, selectedItemList);
|
40
|
+
testRecord = addField(testRecord, "リンク", FieldType.LINK, "http://cybozu.co.jp/");
|
41
|
+
testRecord = addField(testRecord, "日付", FieldType.DATE, "2018-01-01");
|
42
|
+
testRecord = addField(testRecord, "時刻", FieldType.TIME, "12:34");
|
43
|
+
testRecord = addField(testRecord, "日時", FieldType.DATETIME, "2018-01-02T02:30:00Z");
|
44
|
+
|
45
|
+
ArrayList<Member> userList = new ArrayList<>();
|
46
|
+
userList.add(testman1);
|
47
|
+
userList.add(testman2);
|
48
|
+
addField(testRecord, "ユーザー選択", FieldType.USER_SELECT, userList);
|
49
|
+
ArrayList<Member> groupList = new ArrayList<>();
|
50
|
+
groupList.add(testgroup1);
|
51
|
+
groupList.add(testgroup2);
|
52
|
+
addField(testRecord, "グループ選択", FieldType.GROUP_SELECT, groupList);
|
53
|
+
ArrayList<Member> orgList = new ArrayList<>();
|
54
|
+
orgList.add(testorg1);
|
55
|
+
orgList.add(testorg2);
|
56
|
+
addField(testRecord, "組織選択", FieldType.ORGANIZATION_SELECT, orgList);
|
57
|
+
return testRecord;
|
58
|
+
}
|
59
|
+
|
60
|
+
private HashMap<String, FieldValue> addField(HashMap<String, FieldValue> record, String code, FieldType type,
|
61
|
+
Object value) {
|
62
|
+
FieldValue newField = new FieldValue();
|
63
|
+
newField.setType(type);
|
64
|
+
newField.setValue(value);
|
65
|
+
record.put(code, newField);
|
66
|
+
return record;
|
67
|
+
}
|
68
|
+
|
69
|
+
@Test
|
70
|
+
public void testAccess() {
|
71
|
+
HashMap<String, FieldValue> testRecord = createTestRecord();
|
72
|
+
KintoneAccessor accessor = new KintoneAccessor(testRecord);
|
73
|
+
String multiValue = "sample1\nsample2";
|
74
|
+
String userSelect = "code1\ncode2";
|
75
|
+
String groupSelect = "code3\ncode4";
|
76
|
+
String orgSelect = "code5\ncode6";
|
77
|
+
|
78
|
+
assertEquals(testRecord.get("文字列__1行").getValue(), accessor.get("文字列__1行"));
|
79
|
+
assertEquals("1", accessor.get("数値"));
|
80
|
+
assertEquals(testRecord.get("文字列__複数行").getValue(), accessor.get("文字列__複数行"));
|
81
|
+
assertEquals(testRecord.get("リッチエディター").getValue(), accessor.get("リッチエディター"));
|
82
|
+
assertEquals(multiValue, accessor.get("チェックボックス"));
|
83
|
+
assertEquals(testRecord.get("ラジオボタン").getValue(), accessor.get("ラジオボタン"));
|
84
|
+
assertEquals(testRecord.get("ドロップダウン").getValue(), accessor.get("ドロップダウン"));
|
85
|
+
assertEquals(multiValue, accessor.get("複数選択"));
|
86
|
+
assertEquals(testRecord.get("リンク").getValue(), accessor.get("リンク"));
|
87
|
+
assertEquals(testRecord.get("日付").getValue(), accessor.get("日付"));
|
88
|
+
assertEquals(testRecord.get("時刻").getValue(), accessor.get("時刻"));
|
89
|
+
assertEquals(testRecord.get("日時").getValue(), accessor.get("日時"));
|
90
|
+
assertEquals(userSelect, accessor.get("ユーザー選択"));
|
91
|
+
assertEquals(groupSelect, accessor.get("グループ選択"));
|
92
|
+
assertEquals(orgSelect, accessor.get("組織選択"));
|
93
|
+
}
|
94
|
+
}
|
@@ -0,0 +1,75 @@
|
|
1
|
+
package org.embulk.input.kintone;
|
2
|
+
|
3
|
+
import org.embulk.config.ConfigException;
|
4
|
+
import org.embulk.config.ConfigSource;
|
5
|
+
import org.embulk.spi.InputPlugin;
|
6
|
+
|
7
|
+
import org.embulk.test.TestingEmbulk;
|
8
|
+
import org.junit.Rule;
|
9
|
+
import org.junit.Test;
|
10
|
+
import org.junit.rules.ExpectedException;
|
11
|
+
|
12
|
+
import static org.junit.Assert.*;
|
13
|
+
|
14
|
+
public class TestKintoneClient {
|
15
|
+
private ConfigSource config;
|
16
|
+
private static final String BASIC_RESOURCE_PATH = "org/embulk/input/kintone/";
|
17
|
+
|
18
|
+
private static ConfigSource loadYamlResource(TestingEmbulk embulk, String fileName) {
|
19
|
+
return embulk.loadYamlResource(BASIC_RESOURCE_PATH + fileName);
|
20
|
+
}
|
21
|
+
|
22
|
+
@Rule
|
23
|
+
public TestingEmbulk embulk = TestingEmbulk.builder()
|
24
|
+
.registerPlugin(InputPlugin.class, "kintone", KintoneInputPlugin.class)
|
25
|
+
.build();
|
26
|
+
|
27
|
+
@Test
|
28
|
+
public void checkClientWithUsernameAndPassword() {
|
29
|
+
config = loadYamlResource(embulk, "base.yml");
|
30
|
+
PluginTask task = config.loadConfig(PluginTask.class);
|
31
|
+
KintoneClient client = new KintoneClient(task);
|
32
|
+
assertNotNull(client);
|
33
|
+
}
|
34
|
+
|
35
|
+
@Test
|
36
|
+
public void checkThrowErrorWithoutAuthInfo() {
|
37
|
+
config = loadYamlResource(embulk, "base.yml");
|
38
|
+
config.remove("username")
|
39
|
+
.remove("password");
|
40
|
+
PluginTask task = config.loadConfig(PluginTask.class);
|
41
|
+
ConfigException e = assertThrows(ConfigException.class, () -> new KintoneClient(task));
|
42
|
+
assertEquals("Username and password or token must be provided", e.getMessage());
|
43
|
+
}
|
44
|
+
|
45
|
+
@Test
|
46
|
+
public void checkClientErrorLackingPassword() {
|
47
|
+
config = loadYamlResource(embulk, "base.yml");
|
48
|
+
config.remove("password");
|
49
|
+
PluginTask task = config.loadConfig(PluginTask.class);
|
50
|
+
ConfigException e = assertThrows(ConfigException.class, () -> new KintoneClient(task));
|
51
|
+
assertEquals("Username and password or token must be provided", e.getMessage());
|
52
|
+
}
|
53
|
+
|
54
|
+
@Test
|
55
|
+
public void checkClientErrorLackingUsername() {
|
56
|
+
config = loadYamlResource(embulk, "base.yml");
|
57
|
+
config.remove("username");
|
58
|
+
PluginTask task = config.loadConfig(PluginTask.class);
|
59
|
+
ConfigException e = assertThrows(ConfigException.class, () -> {
|
60
|
+
new KintoneClient(task);
|
61
|
+
});
|
62
|
+
assertEquals("Username and password or token must be provided", e.getMessage());
|
63
|
+
}
|
64
|
+
|
65
|
+
@Test
|
66
|
+
public void checkClientWithToken() {
|
67
|
+
config = loadYamlResource(embulk, "base.yml");
|
68
|
+
config.remove("username")
|
69
|
+
.remove("password")
|
70
|
+
.set("token", "token");
|
71
|
+
PluginTask task = config.loadConfig(PluginTask.class);
|
72
|
+
KintoneClient client = new KintoneClient(task);
|
73
|
+
assertNotNull(client);
|
74
|
+
}
|
75
|
+
}
|
@@ -1,5 +1,40 @@
|
|
1
1
|
package org.embulk.input.kintone;
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
import org.embulk.config.ConfigSource;
|
4
|
+
import org.embulk.spi.InputPlugin;
|
5
|
+
|
6
|
+
import org.embulk.test.TestingEmbulk;
|
7
|
+
import org.junit.Rule;
|
8
|
+
import org.junit.Test;
|
9
|
+
|
10
|
+
import static org.junit.Assert.*;
|
11
|
+
|
12
|
+
public class TestKintoneInputPlugin {
|
13
|
+
private ConfigSource config;
|
14
|
+
private static final String BASIC_RESOURCE_PATH = "org/embulk/input/kintone/";
|
15
|
+
|
16
|
+
private static ConfigSource loadYamlResource(TestingEmbulk embulk, String fileName) {
|
17
|
+
return embulk.loadYamlResource(BASIC_RESOURCE_PATH + fileName);
|
18
|
+
}
|
19
|
+
|
20
|
+
@Rule
|
21
|
+
public TestingEmbulk embulk = TestingEmbulk.builder()
|
22
|
+
.registerPlugin(InputPlugin.class, "kintone", KintoneInputPlugin.class)
|
23
|
+
.build();
|
24
|
+
|
25
|
+
@Test
|
26
|
+
public void checkDefaultConfigValues() {
|
27
|
+
config = loadYamlResource(embulk, "base.yml");
|
28
|
+
PluginTask task = config.loadConfig(PluginTask.class);
|
29
|
+
assertEquals("dev.cybozu.com", task.getDomain());
|
30
|
+
assertEquals(1, task.getAppId());
|
31
|
+
assertEquals("username", task.getUsername().get());
|
32
|
+
assertEquals("password", task.getPassword().get());
|
33
|
+
assertFalse(task.getToken().isPresent());
|
34
|
+
assertFalse(task.getGuestSpaceId().isPresent());
|
35
|
+
assertFalse(task.getBasicAuthUsername().isPresent());
|
36
|
+
assertFalse(task.getBasicAuthPassword().isPresent());
|
37
|
+
assertFalse(task.getQuery().isPresent());
|
38
|
+
assertNotNull(task.getFields());
|
39
|
+
}
|
5
40
|
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- giwa
|
@@ -49,7 +49,7 @@ files:
|
|
49
49
|
- LICENSE.txt
|
50
50
|
- README.md
|
51
51
|
- build.gradle
|
52
|
-
- classpath/embulk-input-kintone-0.1.
|
52
|
+
- classpath/embulk-input-kintone-0.1.1.jar
|
53
53
|
- classpath/gson-2.8.2.jar
|
54
54
|
- classpath/kintone-sdk-0.4.0.jar
|
55
55
|
- config/checkstyle/checkstyle.xml
|
@@ -64,8 +64,11 @@ files:
|
|
64
64
|
- src/main/java/org/embulk/input/kintone/KintoneInputColumnVisitor.java
|
65
65
|
- src/main/java/org/embulk/input/kintone/KintoneInputPlugin.java
|
66
66
|
- src/main/java/org/embulk/input/kintone/PluginTask.java
|
67
|
+
- src/test/java/org/embulk/input/kintone/TestKintoneAccessor.java
|
68
|
+
- src/test/java/org/embulk/input/kintone/TestKintoneClient.java
|
67
69
|
- src/test/java/org/embulk/input/kintone/TestKintoneInputPlugin.java
|
68
|
-
|
70
|
+
- src/test/resources/org/embulk/input/kintone/base.yml
|
71
|
+
homepage: https://github.com/trocco-io/embulk-input-kintone
|
69
72
|
licenses:
|
70
73
|
- MIT
|
71
74
|
metadata: {}
|