Class: MyMediaFTP

Inherits:
Net::FTP
  • Object
show all
Defined in:
lib/mymedia_ftp.rb

Instance Method Summary collapse

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)
  (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