Class: MyMediaFTP
- Inherits:
-
Net::FTP
- Object
- Net::FTP
- MyMediaFTP
- Defined in:
- lib/mymedia_ftp.rb
Instance Method Summary collapse
- #chdir(dir) ⇒ Object
- #cp(src = '', dest = '', &blk) ⇒ Object
-
#initialize(host: '127.0.0.1', user: 'user', password: '1234', port: 21, debug: false) ⇒ MyMediaFTP
constructor
A new instance of MyMediaFTP.
- #list_filenames(s = @curdir+'/*') ⇒ Object (also: #ls)
- #mv(src = '', dest = '') ⇒ Object
Constructor Details
#initialize(host: '127.0.0.1', user: 'user', password: '1234', port: 21, debug: false) ⇒ MyMediaFTP
Returns a new instance of MyMediaFTP.
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/mymedia_ftp.rb', line 11 def initialize(host: '127.0.0.1', user: 'user', password: '1234', port: 21, debug: false) @debug = debug @curdir = '/' super() connect(host, port) login(user, password) end |
Instance Method Details
#chdir(dir) ⇒ Object
22 23 24 25 |
# File 'lib/mymedia_ftp.rb', line 22 def chdir(dir) super(dir) @curdir = pwd end |
#cp(src = '', dest = '', &blk) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/mymedia_ftp.rb', line 27 def cp(src='', dest='', &blk) puts 'cp: ' + src.inspect if @debug chdir File.dirname(src) FileUtils.mkdir_p dest Dir.chdir dest files = list_filenames(src) puts 'copying ...' files.each do |h| name, type = h[:name], h[:type] puts name if type == :file then getbinaryfile name, name.downcase.gsub(/ +/,'-') else cp_dir(name, &blk) end blk.call(name, type) if block_given? end end |
#list_filenames(s = @curdir+'/*') ⇒ Object Also known as: ls
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/mymedia_ftp.rb', line 54 def list_filenames(s=@curdir+'/*') if @debug puts 'inside list_filenames' puts 's: ' + s.inspect end src = File.dirname(s) raw_q = File.basename(s) puts 'raw_q: ' + raw_q.inspect if @debug q = raw_q.gsub('.','\.').gsub('*','.*').gsub('?','.?')\ .sub(/[^\*\?\.]$/,'.*') list(src).inject([]) do |r, x| raw_attr, _, owner, group, filesize, month, day, time, filename = \ x.split(/ +/,9) type = raw_attr =~ /d/ ? :directory : :file filename[/^#{q}$/] ? r << {name: filename, type: type} : r r end end |
#mv(src = '', dest = '') ⇒ Object
82 83 84 85 86 87 88 89 |
# File 'lib/mymedia_ftp.rb', line 82 def mv(src='', dest='') puts 'moving ...' cp(src, dest) do |file, type| type == :file ? delete(file) : rmdir(file) end end |