class Aqueduct::Repositories::Ftp

Public Instance Methods

count_files(file_locators, file_type) click to toggle source
# File lib/aqueduct/repositories/ftp.rb, line 20
def count_files(file_locators, file_type)
  error = ''
  file_paths = []
  url_paths = []
  begin
    ftp = Net::FTP.new #(@source.file_server_host, @source.file_server_login, @source.file_server_password)
    ftp.connect(@source.file_server_host, 21)
    ftp.login(@source.file_server_login, @source.file_server_password)

    ftp.chdir(@source.file_server_path)

    file_locators.each do |file_locator|
      file_locator = file_locator.to_s.gsub(/[\/*]/, '') # Don't allow wild cards or subfolders
      file_type = file_type.to_s.gsub(/[\/*]/, '')       # Don't allow wild cards or subfolders
      file_name = file_locator + file_type
      file_path = File.join(Rails.root, 'tmp', 'symbolic', "source_#{@source.id}", @source.file_server_path)

      if File.exists?(File.join(file_path, file_name))
        # Do nothing
        # Rails.logger.debug "File already exists"
      else
        begin
          # Rails.logger.debug "Retrieving #{file_name} from FTP"
          FileUtils.mkpath(file_path)
          ftp.getbinaryfile(file_name, File.join(file_path, file_name))
        rescue
          # Rails.logger.debug "           #{file_name} not found!"
          File.delete(File.join(file_path, file_name)) if File.exists?(File.join(file_path, file_name))
          file_name = nil
        end
      end

      file_paths << File.join(file_path, file_name) unless file_name.blank?
      url_paths << SITE_URL + "/sources/#{@source.id}/download_file?file_locator=#{file_locator}&file_type=#{file_type}&fn=#{file_name.split('/').last}" unless file_name.blank?

    end
  rescue => e
    error = e.to_s
  ensure
    begin
      ftp.close
    rescue => e
      # We don't care.
    end
  end
  { result: url_paths.size, error: error, file_paths: file_paths, urls: url_paths }
end
file_server_available?() click to toggle source
# File lib/aqueduct/repositories/ftp.rb, line 77
def file_server_available?
  result = false
  error = ''
  begin
    ftp = Net::FTP.new
    ftp.connect(@source.file_server_host, 21)
    ftp.login(@source.file_server_login, @source.file_server_password)
    result = true
  rescue => e
    error = e.to_s
  ensure
    begin
      ftp.close
    rescue => e
      # We don't care.
    end
  end
  { result: result, error: error }
end
get_file(file_locator, file_type) click to toggle source
# File lib/aqueduct/repositories/ftp.rb, line 68
def get_file(file_locator, file_type)
  result_hash = count_files([file_locator], file_type)
  { file_path: result_hash[:file_paths].first.to_s, error: result_hash[:error] }
end
has_repository?() click to toggle source
# File lib/aqueduct/repositories/ftp.rb, line 73
def has_repository?
  { result: true, error: '' }
end