file_transfer 0.0.7 → 0.0.9

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.rb CHANGED
@@ -1,95 +1,95 @@
1
- require "file_transfer/version"
2
- require "file_transfer/file_transfer_handler"
3
- require "file_transfer/generic"
4
- require "file_transfer/ftp"
5
- require "file_transfer/sftp"
6
- require "file_transfer/ftps"
7
- require "net/ftp"
8
- require "net/sftp"
9
-
10
- ##
11
- # Module for file exchange from a locale directory to a remote directory and vice versa. Supported protocols are:
12
- #
13
- # * FTP
14
- # * SFTP
15
- # * FTPS
16
-
17
- module FileTransfer
18
-
19
- ##
20
- # Uploads one or more files to a remote server. To upload files use the locale file paths, not the ruby class File.
21
- # Types are:
22
- # * <tt>:ftp</tt> - for FTP file upload
23
- # * <tt>:ftps</tt> - for FTPS file upload
24
- # * <tt>:sftp</tt> - for SFTP file upload
25
- #
26
- # Options are:
27
- # * <tt>:username</tt> - Specifies the username for login to the remote server
28
- # * <tt>:password</tt> - Specifies the password for login to the remote server
29
- # * <tt>:host</tt> - Specifies the name of the remote server. It could be a DNS name or an IP-Address
30
- # these options are not necessary.
31
- # * <tt>:port</tt> - Specifies the port of the remote server. If the remote server listen on the default port,
32
- # * <tt>:timeout</tt> - If connection hangs, it is possible to define a timeout in seconds here, where the connection
33
- # will be automatically closed.
34
- #
35
- # ==Examples
36
- # <tt>FileTransfer.upload :ftp,
37
- # {:username => 'foo', :password => 'bar', :host => 'localhost'}, [
38
- # {:from => "/local/1.txt", :to => "/remote/uploads/a_1.txt"},
39
- # {:from => "/local/", :to => "/remote/uploads/"},
40
- # {:from => "/local/pdf/*.pdf", :to => "/remote/uploads/pdf/"},
41
- # {:from => ["/local/1.txt", "/local/2.txt", "/local/txt/*.txt"], :to => "/remote/uploads/txt/"}
42
- # ]
43
- # </tt>
44
-
45
- def self.upload(type, options, paths)
46
- handler = FileTransferHandler.new type, options
47
- result = handler.upload paths
48
- handler.close
49
- result
50
- end
51
-
52
- # <tt>FileTransfer.download :ftp,
53
- # {:username => 'foo', :password => 'bar', :host => 'localhost'}, [
54
- # {:from => "/remote/uploads/a_1.txt", :to => "/local/1.txt"},
55
- # {:from => "/remote/uploads/pdf/*.pdf", :to => "/local/pdf/"},
56
- # {:from => ["/remote/uploads/a_1.txt", "/remote/uploads/a_2.txt", "/remote/uploads/txt/*.txt"], :to => "/local/txt/"}
57
- # ]
58
- # </tt>
59
-
60
- def self.download(type, options, paths)
61
- handler = FileTransferHandler.new type, options
62
- result = handler.download paths
63
- handler.close
64
- result
65
- end
66
-
67
- def self.remove(type, options, paths)
68
- handler = FileTransferHandler.new type, options
69
- result = handler.remove paths
70
- handler.close
71
- result
72
- end
73
-
74
- def self.rename(type, options, from_path, to_path)
75
- handler = FileTransferHandler.new type, options
76
- result = handler.rename from_path, to_path
77
- handler.close
78
- result
79
- end
80
-
81
- def self.list(type, options, path)
82
- handler = FileTransferHandler.new type, options
83
- result = handler.list path
84
- handler.close
85
- result
86
- end
87
-
88
- def self.exists?(type, options, path)
89
- handler = FileTransferHandler.new type, options
90
- result = handler.exists? path
91
- handler.close
92
- result
93
- end
94
-
95
- end
1
+ require "file_transfer/version"
2
+ require "file_transfer/file_transfer_handler"
3
+ require "file_transfer/generic"
4
+ require "file_transfer/ftp"
5
+ require "file_transfer/sftp"
6
+ require "file_transfer/ftps"
7
+ require "net/ftp"
8
+ require "net/sftp"
9
+
10
+ ##
11
+ # Module for file exchange from a locale directory to a remote directory and vice versa. Supported protocols are:
12
+ #
13
+ # * FTP
14
+ # * SFTP
15
+ # * FTPS
16
+
17
+ module FileTransfer
18
+
19
+ ##
20
+ # Uploads one or more files to a remote server. To upload files use the locale file paths, not the ruby class File.
21
+ # Types are:
22
+ # * <tt>:ftp</tt> - for FTP file upload
23
+ # * <tt>:ftps</tt> - for FTPS file upload
24
+ # * <tt>:sftp</tt> - for SFTP file upload
25
+ #
26
+ # Options are:
27
+ # * <tt>:username</tt> - Specifies the username for login to the remote server
28
+ # * <tt>:password</tt> - Specifies the password for login to the remote server
29
+ # * <tt>:host</tt> - Specifies the name of the remote server. It could be a DNS name or an IP-Address
30
+ # these options are not necessary.
31
+ # * <tt>:port</tt> - Specifies the port of the remote server. If the remote server listen on the default port,
32
+ # * <tt>:timeout</tt> - If connection hangs, it is possible to define a timeout in seconds here, where the connection
33
+ # will be automatically closed.
34
+ #
35
+ # ==Examples
36
+ # <tt>FileTransfer.upload :ftp,
37
+ # {:username => 'foo', :password => 'bar', :host => 'localhost'}, [
38
+ # {:from => "/local/1.txt", :to => "/remote/uploads/a_1.txt"},
39
+ # {:from => "/local/", :to => "/remote/uploads/"},
40
+ # {:from => "/local/pdf/*.pdf", :to => "/remote/uploads/pdf/"},
41
+ # {:from => ["/local/1.txt", "/local/2.txt", "/local/txt/*.txt"], :to => "/remote/uploads/txt/"}
42
+ # ]
43
+ # </tt>
44
+
45
+ def self.upload(type, options, paths)
46
+ handler = FileTransferHandler.new type, options
47
+ result = handler.upload paths
48
+ handler.close
49
+ result
50
+ end
51
+
52
+ # <tt>FileTransfer.download :ftp,
53
+ # {:username => 'foo', :password => 'bar', :host => 'localhost'}, [
54
+ # {:from => "/remote/uploads/a_1.txt", :to => "/local/1.txt"},
55
+ # {:from => "/remote/uploads/pdf/*.pdf", :to => "/local/pdf/"},
56
+ # {:from => ["/remote/uploads/a_1.txt", "/remote/uploads/a_2.txt", "/remote/uploads/txt/*.txt"], :to => "/local/txt/"}
57
+ # ]
58
+ # </tt>
59
+
60
+ def self.download(type, options, paths)
61
+ handler = FileTransferHandler.new type, options
62
+ result = handler.download paths
63
+ handler.close
64
+ result
65
+ end
66
+
67
+ def self.remove(type, options, paths)
68
+ handler = FileTransferHandler.new type, options
69
+ result = handler.remove paths
70
+ handler.close
71
+ result
72
+ end
73
+
74
+ def self.rename(type, options, from_path, to_path)
75
+ handler = FileTransferHandler.new type, options
76
+ result = handler.rename from_path, to_path
77
+ handler.close
78
+ result
79
+ end
80
+
81
+ def self.list(type, options, path)
82
+ handler = FileTransferHandler.new type, options
83
+ result = handler.list path
84
+ handler.close
85
+ result
86
+ end
87
+
88
+ def self.exists?(type, options, path)
89
+ handler = FileTransferHandler.new type, options
90
+ result = handler.exists? path
91
+ handler.close
92
+ result
93
+ end
94
+
95
+ end
@@ -1,152 +1,152 @@
1
- require "spec_helper"
2
-
3
- RSpec.configure do |c|
4
- c.filter_run_excluding :transaction => true
5
- end
6
-
7
- module FileTransfer
8
-
9
- describe FileTransferHandler do
10
-
11
- describe "#_upload", :transaction => true do
12
-
13
- end
14
-
15
- describe "#upload" do
16
-
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
-
49
- it "should list from OTTO SFTP" do
50
- instance = FileTransferHandler.new :sftp, {
51
- :host => "sftp-dmz.otto.de",
52
- :username => "eosch",
53
- :password => "hot}Orm1",
54
- :port => 22
55
- }
56
- puts instance.list("/").inspect
57
- end
58
-
59
- it "should upload a test-file to OTTO SFTP" do
60
- instance = FileTransferHandler.new :sftp, {
61
- :host => "sftp-dmz.otto.de",
62
- :username => "eosch",
63
- :password => "hot}Orm1",
64
- :port => 22
65
- }
66
- this_path = File.dirname(__FILE__)
67
- paths = {:from => "#{this_path}/../test_files/empty_file.csv", :to => "/eosch/in/test/empty_file_1.csv"}
68
- result = instance.upload(paths)
69
- Dir.chdir("#{this_path}/../test_files/")
70
- result_array = Dir["*.csv"]
71
-
72
- result.should be_kind_of(Array)
73
- #result.should match_array(result_array)
74
-
75
- puts "--BEGIN OF TEST"
76
- puts result
77
- puts "--END OF TEST"
78
- end
79
-
80
- it "should download the test-file from OTTO SFTP" do
81
- instance = FileTransferHandler.new :sftp, {
82
- :host => "sftp-dmz.otto.de",
83
- :username => "eosch",
84
- :password => "hot}Orm1",
85
- :port => 22
86
- }
87
- this_path = File.dirname(__FILE__)
88
- paths = {:from => "/eosch/in/test/empty_file_1.csv", :to => "#{this_path}/../test_files/empty_file_from_sftp.csv"}
89
- result = instance.download(paths)
90
- Dir.chdir("#{this_path}/../test_files/")
91
- result_array = Dir["*.csv"]
92
-
93
- result.should be_kind_of(Array)
94
- #result.should match_array(result_array)
95
-
96
- puts "--BEGIN OF TEST"
97
- puts result
98
- puts "--END OF TEST"
99
- end
100
-
101
- it "should rename the test-file from OTTO SFTP" do
102
- instance = FileTransferHandler.new :sftp, {
103
- :host => "sftp-dmz.otto.de",
104
- :username => "eosch",
105
- :password => "hot}Orm1",
106
- :port => 22
107
- }
108
- result = instance.rename "/eosch/in/test/empty_file_1.csv", "/eosch/in/test/empty_file_1.csv_old"
109
- end
110
-
111
- #it "should return an Array of various Files" do
112
- # instance = FileTransferHandler.new :ftp, {}
113
- # this_path = File.dirname(__FILE__)
114
- # paths = [
115
- # {:from => [
116
- # ["#{this_path}/../test_files/", "**/*.txt"],
117
- # "#{this_path}/../test_files/folder1/"
118
- # ],
119
- # :to => "/remote_path/"
120
- # },
121
- # {:from => ["#{this_path}/../test_files/folder2/", "[jt]*.jpg"], :to => "/remote_path/"}
122
- # ]
123
- #
124
- # instance.stub(:_upload).and_return(true)
125
- # result = instance.upload(paths)
126
- #
127
- # Dir.chdir(paths[0][:from][0][0])
128
- # result_array = Dir[paths[0][:from][0][1]]
129
- #
130
- # Dir.chdir(paths[0][:from][1])
131
- # Dir["*.*"].each do |f|
132
- # result_array.push f
133
- # end
134
- #
135
- # Dir.chdir(paths[1][:from][0])
136
- # Dir[paths[1][:from][1]].each do |f|
137
- # result_array.push f
138
- # end
139
- #
140
- # result.should be_kind_of(Array)
141
- # result.should match_array(result_array)
142
- #
143
- # puts "--BEGIN OF TEST"
144
- # puts result
145
- # puts "--END OF TEST"
146
- #end
147
-
148
- end
149
-
150
- end
151
-
1
+ require "spec_helper"
2
+
3
+ RSpec.configure do |c|
4
+ c.filter_run_excluding :transaction => true
5
+ end
6
+
7
+ module FileTransfer
8
+
9
+ describe FileTransferHandler do
10
+
11
+ describe "#_upload", :transaction => true do
12
+
13
+ end
14
+
15
+ describe "#upload" do
16
+
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
+
49
+ it "should list from OTTO SFTP" do
50
+ instance = FileTransferHandler.new :sftp, {
51
+ :host => "sftp-dmz.otto.de",
52
+ :username => "eosch",
53
+ :password => "hot}Orm1",
54
+ :port => 22
55
+ }
56
+ puts instance.list("/").inspect
57
+ end
58
+
59
+ it "should upload a test-file to OTTO SFTP" do
60
+ instance = FileTransferHandler.new :sftp, {
61
+ :host => "sftp-dmz.otto.de",
62
+ :username => "eosch",
63
+ :password => "hot}Orm1",
64
+ :port => 22
65
+ }
66
+ this_path = File.dirname(__FILE__)
67
+ paths = {:from => "#{this_path}/../test_files/empty_file.csv", :to => "/eosch/in/test/empty_file_1.csv"}
68
+ result = instance.upload(paths)
69
+ Dir.chdir("#{this_path}/../test_files/")
70
+ result_array = Dir["*.csv"]
71
+
72
+ result.should be_kind_of(Array)
73
+ #result.should match_array(result_array)
74
+
75
+ puts "--BEGIN OF TEST"
76
+ puts result
77
+ puts "--END OF TEST"
78
+ end
79
+
80
+ it "should download the test-file from OTTO SFTP" do
81
+ instance = FileTransferHandler.new :sftp, {
82
+ :host => "sftp-dmz.otto.de",
83
+ :username => "eosch",
84
+ :password => "hot}Orm1",
85
+ :port => 22
86
+ }
87
+ this_path = File.dirname(__FILE__)
88
+ paths = {:from => "/eosch/in/test/empty_file_1.csv", :to => "#{this_path}/../test_files/empty_file_from_sftp.csv"}
89
+ result = instance.download(paths)
90
+ Dir.chdir("#{this_path}/../test_files/")
91
+ result_array = Dir["*.csv"]
92
+
93
+ result.should be_kind_of(Array)
94
+ #result.should match_array(result_array)
95
+
96
+ puts "--BEGIN OF TEST"
97
+ puts result
98
+ puts "--END OF TEST"
99
+ end
100
+
101
+ it "should rename the test-file from OTTO SFTP" do
102
+ instance = FileTransferHandler.new :sftp, {
103
+ :host => "sftp-dmz.otto.de",
104
+ :username => "eosch",
105
+ :password => "hot}Orm1",
106
+ :port => 22
107
+ }
108
+ result = instance.rename "/eosch/in/test/empty_file_1.csv", "/eosch/in/test/empty_file_1.csv_old"
109
+ end
110
+
111
+ #it "should return an Array of various Files" do
112
+ # instance = FileTransferHandler.new :ftp, {}
113
+ # this_path = File.dirname(__FILE__)
114
+ # paths = [
115
+ # {:from => [
116
+ # ["#{this_path}/../test_files/", "**/*.txt"],
117
+ # "#{this_path}/../test_files/folder1/"
118
+ # ],
119
+ # :to => "/remote_path/"
120
+ # },
121
+ # {:from => ["#{this_path}/../test_files/folder2/", "[jt]*.jpg"], :to => "/remote_path/"}
122
+ # ]
123
+ #
124
+ # instance.stub(:_upload).and_return(true)
125
+ # result = instance.upload(paths)
126
+ #
127
+ # Dir.chdir(paths[0][:from][0][0])
128
+ # result_array = Dir[paths[0][:from][0][1]]
129
+ #
130
+ # Dir.chdir(paths[0][:from][1])
131
+ # Dir["*.*"].each do |f|
132
+ # result_array.push f
133
+ # end
134
+ #
135
+ # Dir.chdir(paths[1][:from][0])
136
+ # Dir[paths[1][:from][1]].each do |f|
137
+ # result_array.push f
138
+ # end
139
+ #
140
+ # result.should be_kind_of(Array)
141
+ # result.should match_array(result_array)
142
+ #
143
+ # puts "--BEGIN OF TEST"
144
+ # puts result
145
+ # puts "--END OF TEST"
146
+ #end
147
+
148
+ end
149
+
150
+ end
151
+
152
152
  end
@@ -0,0 +1,66 @@
1
+ require 'spec_helper'
2
+
3
+ module FileTransfer
4
+ describe Generic do
5
+
6
+ describe '.new' do
7
+ context 'when options are empty' do
8
+ let(:generic) { Generic.new }
9
+
10
+ it 'sets default host to localhost' do
11
+ expect(generic.host).to eq('localhost')
12
+ end
13
+
14
+ it 'sets default username to anonymous' do
15
+ expect(generic.username).to eq('anonymous')
16
+ end
17
+
18
+ it 'sets default password to empty string' do
19
+ expect(generic.password).to eq('')
20
+ end
21
+
22
+ it 'sets default keys to empty array' do
23
+ expect(generic.keys).to eq([])
24
+ end
25
+
26
+ it 'sets default port to 21' do
27
+ expect(generic.port).to eq(21)
28
+ end
29
+
30
+ it 'sets default timeout to 300' do
31
+ expect(generic.timeout_seconds).to eq(300)
32
+ end
33
+ end
34
+
35
+ context 'when options are defined' do
36
+ before do
37
+ @generic = Generic.new(:host => 'test.com', :username => 'test_usr', :password => 'test_pw', :keys => 'test.pk', :port => 22, :timeout => 500)
38
+ end
39
+
40
+ it 'sets host to options[:host]' do
41
+ expect(@generic.host).to eq('test.com')
42
+ end
43
+
44
+ it 'sets username to options[:username]' do
45
+ expect(@generic.username).to eq('test_usr')
46
+ end
47
+
48
+ it 'sets password to options[:password]' do
49
+ expect(@generic.password).to eq('test_pw')
50
+ end
51
+
52
+ it 'sets keys to options[:keys]' do
53
+ expect(@generic.keys).to eq(%w(test.pk))
54
+ end
55
+
56
+ it 'sets port to options[:port]' do
57
+ expect(@generic.port).to eq(22)
58
+ end
59
+
60
+ it 'sets timeout to options[:timeout]' do
61
+ expect(@generic.timeout_seconds).to eq(500)
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ module FileTransfer
4
+ describe Sftp do
5
+
6
+ describe '.new' do
7
+ context 'when port is defined in options parameter' do
8
+ it 'sets port from options' do
9
+ sftp = Sftp.new :port => 23
10
+ expect(sftp.port).to eq(23)
11
+ end
12
+ end
13
+
14
+ context 'when no port is defined in options parameter' do
15
+ it 'sets default port 22' do
16
+ sftp = Sftp.new
17
+ expect(sftp.port).to be(22)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end