embulk-input-remote 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e30d0f99dcb958e08afc14b19630f2eab518c01f
4
- data.tar.gz: 086290764bf8c788db1b8b2e705f9a1eebacb49e
3
+ metadata.gz: 303e89aa29cb5154cae5337a90dae5c3dad30e70
4
+ data.tar.gz: 0447d693207db43d2f3058139a43d5e9a225e117
5
5
  SHA512:
6
- metadata.gz: 186acc6cf0ff2ef037819d0277f24b03760038515bf377334afcfce89918ab1bb8424a0f726047ad9e79bbef138e71c66b5fac78d17e1df420407cc0213e207c
7
- data.tar.gz: d1090d03a03e2a4708897989dbda36d60d86fd4226a6b7893cc9bb9f72ef11080b7c69f79280c57374a0bc59f3496e64cb69ddcce9f3085d460b59e15d593f8e
6
+ metadata.gz: 0caa5463e3c5f7573ddc72b5640ab01702e307cf3cd26001f16ea71aa382be58de3c8d6b06c138d4d829d50843125af7cc9996b5a73b5ac08bffa05de5200ecd
7
+ data.tar.gz: 146c22cf5416e4cd47d059f121b0a054eddad875eeddd30b4af178d7c09e888762aae2875930d01a0f43450afc96e88a2b913895b65f85ebc0bb1dc1de20a1a6
data/build.gradle CHANGED
@@ -13,13 +13,13 @@ configurations {
13
13
  provided
14
14
  }
15
15
 
16
- version = "0.1.4"
16
+ version = "0.1.5"
17
17
 
18
18
  dependencies {
19
- compile "org.embulk:embulk-core:0.6.1"
20
- compile "com.hierynomus:sshj:0.11.0"
19
+ compile "org.embulk:embulk-core:0.7.10"
20
+ compile "com.hierynomus:sshj:0.15.0"
21
21
  compile "com.jcraft:jzlib:1.1.3"
22
- provided "org.embulk:embulk-core:0.6.1"
22
+ provided "org.embulk:embulk-core:0.7.10"
23
23
  testCompile "junit:junit:4.+"
24
24
  }
25
25
 
@@ -40,7 +40,7 @@ task gemspec << { file("build/gemspec").write($/
40
40
  Gem::Specification.new do |spec|
41
41
  spec.name = "${project.name}"
42
42
  spec.version = "${project.version}"
43
- spec.authors = ["Shinichi ISHIMURA"]
43
+ spec.authors = ["Shinichi Ishimura"]
44
44
  spec.summary = %[Remote file input plugin for Embulk]
45
45
  spec.description = %[Reads files stored on Remote hosts by SCP.]
46
46
  spec.email = ["shiketaudonko41@gmail.com"]
Binary file
Binary file
Binary file
@@ -0,0 +1,29 @@
1
+ in:
2
+ type: remote
3
+ hosts:
4
+ - localhost
5
+ path: {{ env.PROJECT_ROOT }}/example/csv
6
+ ignore_not_found_hosts: true
7
+ auth:
8
+ user: {{ env.USER }}
9
+ type: password
10
+ password: {{ env.PASSWORD }}
11
+ decoders:
12
+ - {type: gzip}
13
+ parser:
14
+ charset: UTF-8
15
+ newline: CRLF
16
+ type: csv
17
+ delimiter: ','
18
+ quote: '"'
19
+ trim_if_not_quoted: false
20
+ skip_header_lines: 1
21
+ allow_extra_columns: false
22
+ allow_optional_columns: false
23
+ columns:
24
+ - {name: id, type: long}
25
+ - {name: account, type: long}
26
+ - {name: time, type: timestamp, format: '%Y-%m-%d %H:%M:%S'}
27
+ - {name: purchase, type: timestamp, format: '%Y%m%d'}
28
+ - {name: comment, type: string}
29
+ out: {type: stdout}
Binary file
@@ -1,6 +1,6 @@
1
- #Mon Apr 13 17:43:10 JST 2015
1
+ #Sun Dec 13 00:26:07 JST 2015
2
2
  distributionBase=GRADLE_USER_HOME
3
3
  distributionPath=wrapper/dists
4
4
  zipStoreBase=GRADLE_USER_HOME
5
5
  zipStorePath=wrapper/dists
6
- distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
6
+ distributionUrl=https\://services.gradle.org/distributions/gradle-2.6-bin.zip
data/gradlew.bat CHANGED
@@ -1,90 +1,90 @@
1
- @if "%DEBUG%" == "" @echo off
2
- @rem ##########################################################################
3
- @rem
4
- @rem Gradle startup script for Windows
5
- @rem
6
- @rem ##########################################################################
7
-
8
- @rem Set local scope for the variables with windows NT shell
9
- if "%OS%"=="Windows_NT" setlocal
10
-
11
- @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12
- set DEFAULT_JVM_OPTS=
13
-
14
- set DIRNAME=%~dp0
15
- if "%DIRNAME%" == "" set DIRNAME=.
16
- set APP_BASE_NAME=%~n0
17
- set APP_HOME=%DIRNAME%
18
-
19
- @rem Find java.exe
20
- if defined JAVA_HOME goto findJavaFromJavaHome
21
-
22
- set JAVA_EXE=java.exe
23
- %JAVA_EXE% -version >NUL 2>&1
24
- if "%ERRORLEVEL%" == "0" goto init
25
-
26
- echo.
27
- echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28
- echo.
29
- echo Please set the JAVA_HOME variable in your environment to match the
30
- echo location of your Java installation.
31
-
32
- goto fail
33
-
34
- :findJavaFromJavaHome
35
- set JAVA_HOME=%JAVA_HOME:"=%
36
- set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37
-
38
- if exist "%JAVA_EXE%" goto init
39
-
40
- echo.
41
- echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42
- echo.
43
- echo Please set the JAVA_HOME variable in your environment to match the
44
- echo location of your Java installation.
45
-
46
- goto fail
47
-
48
- :init
49
- @rem Get command-line arguments, handling Windowz variants
50
-
51
- if not "%OS%" == "Windows_NT" goto win9xME_args
52
- if "%@eval[2+2]" == "4" goto 4NT_args
53
-
54
- :win9xME_args
55
- @rem Slurp the command line arguments.
56
- set CMD_LINE_ARGS=
57
- set _SKIP=2
58
-
59
- :win9xME_args_slurp
60
- if "x%~1" == "x" goto execute
61
-
62
- set CMD_LINE_ARGS=%*
63
- goto execute
64
-
65
- :4NT_args
66
- @rem Get arguments from the 4NT Shell from JP Software
67
- set CMD_LINE_ARGS=%$
68
-
69
- :execute
70
- @rem Setup the command line
71
-
72
- set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73
-
74
- @rem Execute Gradle
75
- "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76
-
77
- :end
78
- @rem End local scope for the variables with windows NT shell
79
- if "%ERRORLEVEL%"=="0" goto mainEnd
80
-
81
- :fail
82
- rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83
- rem the _cmd.exe /c_ return code!
84
- if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85
- exit /b 1
86
-
87
- :mainEnd
88
- if "%OS%"=="Windows_NT" endlocal
89
-
90
- :omega
1
+ @if "%DEBUG%" == "" @echo off
2
+ @rem ##########################################################################
3
+ @rem
4
+ @rem Gradle startup script for Windows
5
+ @rem
6
+ @rem ##########################################################################
7
+
8
+ @rem Set local scope for the variables with windows NT shell
9
+ if "%OS%"=="Windows_NT" setlocal
10
+
11
+ @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12
+ set DEFAULT_JVM_OPTS=
13
+
14
+ set DIRNAME=%~dp0
15
+ if "%DIRNAME%" == "" set DIRNAME=.
16
+ set APP_BASE_NAME=%~n0
17
+ set APP_HOME=%DIRNAME%
18
+
19
+ @rem Find java.exe
20
+ if defined JAVA_HOME goto findJavaFromJavaHome
21
+
22
+ set JAVA_EXE=java.exe
23
+ %JAVA_EXE% -version >NUL 2>&1
24
+ if "%ERRORLEVEL%" == "0" goto init
25
+
26
+ echo.
27
+ echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28
+ echo.
29
+ echo Please set the JAVA_HOME variable in your environment to match the
30
+ echo location of your Java installation.
31
+
32
+ goto fail
33
+
34
+ :findJavaFromJavaHome
35
+ set JAVA_HOME=%JAVA_HOME:"=%
36
+ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37
+
38
+ if exist "%JAVA_EXE%" goto init
39
+
40
+ echo.
41
+ echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42
+ echo.
43
+ echo Please set the JAVA_HOME variable in your environment to match the
44
+ echo location of your Java installation.
45
+
46
+ goto fail
47
+
48
+ :init
49
+ @rem Get command-line arguments, handling Windowz variants
50
+
51
+ if not "%OS%" == "Windows_NT" goto win9xME_args
52
+ if "%@eval[2+2]" == "4" goto 4NT_args
53
+
54
+ :win9xME_args
55
+ @rem Slurp the command line arguments.
56
+ set CMD_LINE_ARGS=
57
+ set _SKIP=2
58
+
59
+ :win9xME_args_slurp
60
+ if "x%~1" == "x" goto execute
61
+
62
+ set CMD_LINE_ARGS=%*
63
+ goto execute
64
+
65
+ :4NT_args
66
+ @rem Get arguments from the 4NT Shell from JP Software
67
+ set CMD_LINE_ARGS=%$
68
+
69
+ :execute
70
+ @rem Setup the command line
71
+
72
+ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73
+
74
+ @rem Execute Gradle
75
+ "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76
+
77
+ :end
78
+ @rem End local scope for the variables with windows NT shell
79
+ if "%ERRORLEVEL%"=="0" goto mainEnd
80
+
81
+ :fail
82
+ rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83
+ rem the _cmd.exe /c_ return code!
84
+ if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85
+ exit /b 1
86
+
87
+ :mainEnd
88
+ if "%OS%"=="Windows_NT" endlocal
89
+
90
+ :omega
@@ -16,20 +16,20 @@ import com.fasterxml.jackson.annotation.JsonCreator;
16
16
  import com.fasterxml.jackson.annotation.JsonProperty;
17
17
  import com.google.common.base.Optional;
18
18
  import com.google.common.collect.ImmutableList;
19
- import org.embulk.config.CommitReport;
20
19
  import org.embulk.config.Config;
21
20
  import org.embulk.config.ConfigDefault;
22
21
  import org.embulk.config.ConfigDiff;
23
22
  import org.embulk.config.ConfigInject;
24
23
  import org.embulk.config.ConfigSource;
25
24
  import org.embulk.config.Task;
25
+ import org.embulk.config.TaskReport;
26
26
  import org.embulk.config.TaskSource;
27
27
  import org.embulk.input.remote.SSHClient;
28
28
  import org.embulk.spi.BufferAllocator;
29
29
  import org.embulk.spi.Exec;
30
30
  import org.embulk.spi.FileInputPlugin;
31
31
  import org.embulk.spi.TransactionalFileInput;
32
- import org.embulk.spi.util.InputStreamFileInput;
32
+ import org.embulk.spi.util.InputStreamTransactionalFileInput;
33
33
  import org.slf4j.Logger;
34
34
 
35
35
  import javax.annotation.Nullable;
@@ -183,64 +183,37 @@ public class RemoteFileInputPlugin
183
183
  @Override
184
184
  public void cleanup(TaskSource taskSource,
185
185
  int taskCount,
186
- List<CommitReport> successCommitReports) {
186
+ List<TaskReport> successTaskReports) {
187
187
  }
188
188
 
189
189
  @Override
190
190
  public TransactionalFileInput open(TaskSource taskSource, int taskIndex) {
191
- PluginTask task = taskSource.loadTask(PluginTask.class);
191
+ final PluginTask task = taskSource.loadTask(PluginTask.class);
192
192
  final Target target = task.getTargets().get(taskIndex);
193
193
 
194
- try {
195
- return new PluginFileInput(task, download(target, task));
196
- } catch (IOException e) {
197
- throw new RuntimeException(e);
198
- }
199
- }
200
-
201
- public static class PluginFileInput
202
- extends InputStreamFileInput
203
- implements TransactionalFileInput {
204
- // TODO create single-file InputStreamFileInput utility
205
- private static class RemoteFileProvider
206
- implements InputStreamFileInput.Provider {
207
- private boolean opened = false;
208
- private final InputStream input;
209
-
210
- public RemoteFileProvider(InputStream input) {
211
- this.input = input;
212
- }
213
-
214
- @Override
215
- public InputStream openNext() throws IOException {
216
- if (opened) {
217
- return null;
194
+ return new InputStreamTransactionalFileInput(
195
+ task.getBufferAllocator(),
196
+ new InputStreamTransactionalFileInput.Opener() {
197
+ @Override
198
+ public InputStream open() throws IOException {
199
+ return download(target, task);
200
+ }
218
201
  }
219
- opened = true;
220
- return input;
202
+ ) {
203
+ @Override
204
+ public void abort() {
205
+
221
206
  }
222
207
 
223
208
  @Override
224
- public void close() {
209
+ public TaskReport commit() {
210
+ return Exec.newTaskReport();
225
211
  }
226
- }
227
-
228
- public PluginFileInput(PluginTask task, InputStream input) {
229
- super(task.getBufferAllocator(), new RemoteFileProvider(input));
230
- }
231
-
232
- @Override
233
- public void abort() {
234
- }
235
-
236
- @Override
237
- public CommitReport commit() {
238
- return Exec.newCommitReport();
239
- }
212
+ };
240
213
  }
241
214
 
242
215
  private boolean exists(Target target, PluginTask task) throws IOException {
243
- try (SSHClient client = new SSHClient()) {
216
+ try (SSHClient client = SSHClient.getInstance()) {
244
217
  client.connect(target.getHost(), task.getAuth());
245
218
 
246
219
  final String checkCmd = "ls " + target.getPath(); // TODO: windows
@@ -257,7 +230,7 @@ public class RemoteFileInputPlugin
257
230
  }
258
231
 
259
232
  private InputStream download(Target target, PluginTask task) throws IOException {
260
- try (SSHClient client = new SSHClient()) {
233
+ try (SSHClient client = SSHClient.getInstance()) {
261
234
  client.connect(target.getHost(), task.getAuth());
262
235
  final ByteArrayOutputStream stream = new ByteArrayOutputStream();
263
236
  client.scpDownload(target.getPath(), stream);
@@ -1,6 +1,11 @@
1
1
  package org.embulk.input.remote;
2
2
 
3
+ import com.hierynomus.sshj.signature.SignatureEdDSA;
4
+ import net.schmizz.sshj.DefaultConfig;
3
5
  import net.schmizz.sshj.connection.channel.direct.Session;
6
+ import net.schmizz.sshj.signature.SignatureDSA;
7
+ import net.schmizz.sshj.signature.SignatureECDSA;
8
+ import net.schmizz.sshj.signature.SignatureRSA;
4
9
  import net.schmizz.sshj.xfer.InMemoryDestFile;
5
10
  import net.schmizz.sshj.xfer.LocalDestFile;
6
11
 
@@ -15,8 +20,18 @@ public class SSHClient implements Closeable {
15
20
 
16
21
  private final net.schmizz.sshj.SSHClient client;
17
22
 
18
- public SSHClient() {
19
- this(new net.schmizz.sshj.SSHClient());
23
+ public static SSHClient getInstance() {
24
+ return new SSHClient(new net.schmizz.sshj.SSHClient(new DefaultConfig(){
25
+ @Override
26
+ protected void initSignatureFactories() {
27
+ setSignatureFactories(
28
+ new SignatureRSA.Factory(),
29
+ new SignatureECDSA.Factory(),
30
+ new SignatureDSA.Factory(),
31
+ new SignatureEdDSA.Factory()
32
+ );
33
+ }
34
+ }));
20
35
  }
21
36
 
22
37
  /* package for test */
@@ -26,7 +41,6 @@ public class SSHClient implements Closeable {
26
41
 
27
42
  public void connect(String host, Map<String, String> authConfig) throws IOException {
28
43
  client.loadKnownHosts();
29
-
30
44
  client.connect(host);
31
45
 
32
46
  final String type = authConfig.get("type") != null ? authConfig.get("type") : "public_key";
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-input-remote
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
- - Shinichi ISHIMURA
7
+ - Shinichi Ishimura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-28 00:00:00.000000000 Z
11
+ date: 2015-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -49,6 +49,8 @@ files:
49
49
  - LICENSE.txt
50
50
  - README.md
51
51
  - build.gradle
52
+ - example/csv/sample_01.csv.gz
53
+ - example/example.yml.liquid
52
54
  - gradle/wrapper/gradle-wrapper.jar
53
55
  - gradle/wrapper/gradle-wrapper.properties
54
56
  - gradlew
@@ -59,9 +61,10 @@ files:
59
61
  - src/test/java/org/embulk/input/TestRemoteFileInputPlugin.java
60
62
  - classpath/bcpkix-jdk15on-1.51.jar
61
63
  - classpath/bcprov-jdk15on-1.51.jar
62
- - classpath/embulk-input-remote-0.1.4.jar
64
+ - classpath/ecc-25519-java-1.0.1.jar
65
+ - classpath/embulk-input-remote-0.1.5.jar
63
66
  - classpath/jzlib-1.1.3.jar
64
- - classpath/sshj-0.11.0.jar
67
+ - classpath/sshj-0.15.0.jar
65
68
  homepage: https://github.com/kamatama41/embulk-input-remote
66
69
  licenses:
67
70
  - MIT
Binary file