Class: ThecoreFtpHelpers::Methods
- Inherits:
-
Object
- Object
- ThecoreFtpHelpers::Methods
- Defined in:
- lib/thecore_ftp_helpers.rb
Class Method Summary collapse
-
.download_most_recent_file(address, username, password, directory, pattern, destination = nil, from = nil) ⇒ Object
If destination is nil, the file will just be downloaded to RAM.
-
.get_and_parse_most_recent_file(address, username, password, directory, pattern, skip_lines = nil, quote_char = "\x0C", col_sep = ";", from = nil) ⇒ Object
ThecoreFtpHelpers::Methods.get_and_parse_most_recent_file ‘31.196.71.18’, ‘ideabagno’, ‘idea2017’, ‘FTP’, ‘AQUA*’, /^[-;]+$/.
-
.list_most_recent_file(address, username, password, directory, pattern, close = true, from = nil) ⇒ Object
Your code goes here…
Class Method Details
.download_most_recent_file(address, username, password, directory, pattern, destination = nil, from = nil) ⇒ Object
If destination is nil, the file will just be downloaded to RAM
50 51 52 53 54 55 56 57 |
# File 'lib/thecore_ftp_helpers.rb', line 50 def self.download_most_recent_file address, username, password, directory, pattern, destination = nil, from = nil most_recent, ftp = list_most_recent_file address, username, password, directory, pattern, false, from file_content = ftp.gettextfile(most_recent, destination).force_encoding('ISO-8859-1').encode('UTF-8') unless most_recent.nil? #.encode!('UTF-8', 'binary', :invalid => :replace) unless most_recent.nil? ftp.close file_content end |
.get_and_parse_most_recent_file(address, username, password, directory, pattern, skip_lines = nil, quote_char = "\x0C", col_sep = ";", from = nil) ⇒ Object
ThecoreFtpHelpers::Methods.get_and_parse_most_recent_file ‘31.196.71.18’, ‘ideabagno’, ‘idea2017’, ‘FTP’, ‘AQUA*’, /^[-;]+$/
60 61 62 63 64 |
# File 'lib/thecore_ftp_helpers.rb', line 60 def self.get_and_parse_most_recent_file address, username, password, directory, pattern, skip_lines = nil, quote_char = "\x0C", col_sep = ";", from = nil file_content = download_most_recent_file address, username, password, directory, pattern, nil, from # , converters: lambda { |h| h.titlecase.strip unless h.nil? }, header_converters: lambda { |h| h.downcase.strip.gsub(' ', '_') unless h.nil? } CSV.parse(file_content, col_sep: col_sep, headers: true, skip_blanks: true, force_quotes: true, quote_char: quote_char, skip_lines: skip_lines, converters: lambda { |h| h.titlecase.strip.gsub(",", " ").split.join(" ") unless h.nil? }, header_converters: lambda { |h| h.downcase.strip.gsub(' ', '_').split("_").reject{|c| c.blank? }.uniq.join("_") unless h.nil? }) unless file_content.blank? end |
.list_most_recent_file(address, username, password, directory, pattern, close = true, from = nil) ⇒ Object
Your code goes here…
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/thecore_ftp_helpers.rb', line 10 def self.list_most_recent_file address, username, password, directory, pattern, close = true, from = nil puts "Connecting to FTP" ftp = Net::FTP.open address, username, password # ftp.passive = false # puts "Entering directory: #{directory}" # ftp.chdir(directory) puts "Listing all files which respond to this pattern: #{pattern}" begin # files = ftp.nlst(pattern) files=ftp.mlsd directory rescue => exception # If we are here, maybe it's beacause of passive mode and the network too secure # let's switch to active mode and try again ftp.passive = false files=ftp.mlsd directory end puts "Last import time: #{from.strftime('%Y-%m-%d %H:%M:%S.%N')}" most_recent = nil # puts "SELECTING FILES" files = files.select {|f| f.pathname.starts_with?(pattern) && f.modify.to_f > from.to_f } unless from.blank? # puts "SELECTED FILES: #{files.inspect}" most_recent = files.sort_by{|f| f.modify.to_f}.last.pathname # puts "MOST RECENT IS: #{most_recent}" # files.select {|f| # puts "For file: #{f}" # puts "Filetime: #{ftp.mtime(f).strftime('%Y-%m-%d %H:%M:%S.%N')}" # puts "File chosen? #{ftp.mtime(f).to_f > from.to_f}" # ftp.mtime(f).to_f > from.to_f # } unless from.blank? # puts "Chosen files: #{files.inspect}" # most_recent = files.sort_by{|f| ftp.mtime(f).to_f}.last puts "Opening File: #{most_recent || "No file has been chosen."}" ftp.close if close ["#{directory}/#{most_recent}", ftp] end |