file_transfer 0.0.2 → 0.0.4
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.
data/lib/file_transfer/ftp.rb
CHANGED
@@ -5,8 +5,6 @@ module FileTransfer
|
|
5
5
|
|
6
6
|
def initialize(options = {})
|
7
7
|
super(options)
|
8
|
-
@ftp = Net::FTP.new
|
9
|
-
@ftp.passive = true
|
10
8
|
end
|
11
9
|
|
12
10
|
def list(dir, options = {})
|
@@ -24,7 +22,7 @@ module FileTransfer
|
|
24
22
|
def upload(from_path, to_path)
|
25
23
|
to_path = split_path(to_path)
|
26
24
|
connect if @ftp.closed?
|
27
|
-
timeout(
|
25
|
+
timeout(timeout_seconds) do
|
28
26
|
@ftp.chdir to_path[:file_path]
|
29
27
|
@ftp.putbinaryfile(from_path)
|
30
28
|
end
|
@@ -33,7 +31,7 @@ module FileTransfer
|
|
33
31
|
def download(from_path, to_path)
|
34
32
|
from_path = split_path(from_path)
|
35
33
|
connect if @ftp.closed?
|
36
|
-
timeout(
|
34
|
+
timeout(timeout_seconds) do
|
37
35
|
@ftp.chdir from_path[:file_path]
|
38
36
|
@ftp.getbinaryfile(to_path, from_path[:file_name])
|
39
37
|
"#{from_path[:file_path]}/#{from_path[:file_name]}"
|
@@ -44,7 +42,7 @@ module FileTransfer
|
|
44
42
|
from_path = split_path(from_path)
|
45
43
|
to_path = split_path(to_path)
|
46
44
|
connect if @ftp.closed?
|
47
|
-
timeout(
|
45
|
+
timeout(timeout_seconds) do
|
48
46
|
@ftp.chdir from_path[:file_path]
|
49
47
|
@ftp.rename from_path[:file_name], "#{to_path[:file_path]}/#{to_path[:file_name]}" if exist?("#{from_path[:file_name]}/#{from_path[:file_path]}")
|
50
48
|
end
|
@@ -59,25 +57,27 @@ module FileTransfer
|
|
59
57
|
end
|
60
58
|
|
61
59
|
def close
|
62
|
-
|
60
|
+
if @ftp && !@ftp.closed?
|
63
61
|
timeout(30) do
|
64
62
|
@ftp.close
|
65
63
|
end
|
66
64
|
end
|
67
65
|
end
|
68
66
|
|
69
|
-
|
70
|
-
"FtpClient {@host => #{@host}, @username => #{@username}, @password => ***}"
|
71
|
-
end
|
67
|
+
protected
|
72
68
|
|
73
|
-
|
74
|
-
|
75
|
-
timeout(30) do
|
76
|
-
@ftp.connect(@host, @port)
|
77
|
-
@ftp.login(@username, @password) if @username && @password
|
69
|
+
def closed?
|
70
|
+
!@ftp || @ftp.closed?
|
78
71
|
end
|
79
|
-
end
|
80
72
|
|
73
|
+
def connect
|
74
|
+
timeout(30) do
|
75
|
+
@ftp ||= Net::FTP.new
|
76
|
+
@ftp.passive = true
|
77
|
+
@ftp.connect(@host, @port)
|
78
|
+
@ftp.login(@username, @password) if @username && @password
|
79
|
+
end
|
80
|
+
end
|
81
81
|
|
82
82
|
end
|
83
83
|
end
|
@@ -2,13 +2,14 @@ module FileTransfer
|
|
2
2
|
|
3
3
|
class Generic
|
4
4
|
|
5
|
-
attr_accessor :host, :username, :password, :port
|
5
|
+
attr_accessor :host, :username, :password, :port, :timeout_seconds
|
6
6
|
|
7
7
|
def initialize(options = {})
|
8
8
|
@host = options[:host] || "localhost"
|
9
9
|
@username = options[:username] || "anonymous"
|
10
10
|
@password = options[:password] || ""
|
11
11
|
@port = options[:port] || 21
|
12
|
+
@timeout_seconds = options[:timeout] || 300
|
12
13
|
end
|
13
14
|
|
14
15
|
def list(dir, filter="")
|
@@ -29,6 +30,10 @@ module FileTransfer
|
|
29
30
|
def close
|
30
31
|
end
|
31
32
|
|
33
|
+
def to_s
|
34
|
+
"FtpClient {@host => #{host}, @username => #{username}, @protocol => #{type}, @port => #{port}, @password => ***}"
|
35
|
+
end
|
36
|
+
|
32
37
|
protected
|
33
38
|
|
34
39
|
def split_path(path)
|
@@ -44,6 +49,9 @@ module FileTransfer
|
|
44
49
|
def connect
|
45
50
|
end
|
46
51
|
|
52
|
+
def closed?
|
53
|
+
end
|
54
|
+
|
47
55
|
end
|
48
56
|
|
49
57
|
end
|
data/lib/file_transfer/sftp.rb
CHANGED
@@ -9,41 +9,33 @@ module FileTransfer
|
|
9
9
|
|
10
10
|
def download(from_path, to_path)
|
11
11
|
connect if closed?
|
12
|
-
timeout(
|
12
|
+
timeout(timeout_seconds) do
|
13
13
|
@sftp.download! from_path, to_path
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
17
|
def upload(from_path, to_path)
|
18
18
|
connect if closed?
|
19
|
-
timeout(
|
19
|
+
timeout(timeout_seconds) do
|
20
20
|
@sftp.upload! from_path, to_path
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
24
|
def close
|
25
|
-
|
26
|
-
timeout(30) do
|
27
|
-
@sftp.close
|
28
|
-
end
|
29
|
-
end
|
25
|
+
# do nothing
|
30
26
|
end
|
31
27
|
|
32
|
-
|
28
|
+
protected
|
33
29
|
|
34
30
|
def connect
|
35
|
-
|
31
|
+
timeout(60) do
|
32
|
+
@sftp = Net::SFTP.start(host, username, :password => password, :port => port)
|
33
|
+
end
|
36
34
|
end
|
37
35
|
|
38
36
|
def closed?
|
39
37
|
!@sftp || @sftp.closed?
|
40
38
|
end
|
41
39
|
|
42
|
-
def timeout(seconds, &block)
|
43
|
-
Timeout.timeout(seconds.to_i) do
|
44
|
-
block.call
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
40
|
end
|
49
41
|
end
|
@@ -14,37 +14,37 @@ module FileTransfer
|
|
14
14
|
|
15
15
|
describe "#upload" do
|
16
16
|
|
17
|
-
it "should return an Array of JPG Files from one Folder" do
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
end
|
32
|
-
|
33
|
-
it "should return an Array of JPG Files from all Subfolders incl. Root-Folder" do
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
end
|
17
|
+
#it "should return an Array of JPG Files from one Folder" do
|
18
|
+
# instance = FileTransferHandler.new :ftp, {}
|
19
|
+
# this_path = File.dirname(__FILE__)
|
20
|
+
# paths = {:from => ["#{this_path}/../test_files/folder2", "*.jpg"], :to => "/remote_path/"}
|
21
|
+
# instance.stub(:_upload).and_return(true)
|
22
|
+
# result = instance.upload(paths)
|
23
|
+
# Dir.chdir(paths[:from][0])
|
24
|
+
# result_array = Dir[paths[:from][1]]
|
25
|
+
# result.should be_kind_of(Array)
|
26
|
+
# result.should match_array(result_array)
|
27
|
+
#
|
28
|
+
# puts "--BEGIN OF TEST"
|
29
|
+
# puts result
|
30
|
+
# puts "--END OF TEST"
|
31
|
+
#end
|
32
|
+
#
|
33
|
+
#it "should return an Array of JPG Files from all Subfolders incl. Root-Folder" do
|
34
|
+
# instance = FileTransferHandler.new :ftp, {}
|
35
|
+
# this_path = File.dirname(__FILE__)
|
36
|
+
# paths = {:from => ["#{this_path}/../test_files/", "**/*.jpg"], :to => "/remote_path/"}
|
37
|
+
# instance.stub(:_upload).and_return(true)
|
38
|
+
# result = instance.upload(paths)
|
39
|
+
# Dir.chdir(paths[:from][0])
|
40
|
+
# result_array = Dir[paths[:from][1]]
|
41
|
+
# result.should be_kind_of(Array)
|
42
|
+
# result.should match_array(result_array)
|
43
|
+
#
|
44
|
+
# puts "--BEGIN OF TEST"
|
45
|
+
# puts result
|
46
|
+
# puts "--END OF TEST"
|
47
|
+
#end
|
48
48
|
|
49
49
|
it "should upload a test-file to OTTO SFTP" do
|
50
50
|
instance = FileTransferHandler.new :sftp, {
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: file_transfer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-08-
|
12
|
+
date: 2012-08-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|