class MgeWholesale::Base

Public Class Methods

connect(options = {}) { |ftp| ... } click to toggle source
# File lib/mge_wholesale/base.rb, line 4
def self.connect(options = {})
  requires!(options, :username, :password)

  Net::FTP.open(MgeWholesale.config.ftp_host, options[:username], options[:password]) do |ftp|
    begin
      ftp.debug_mode = MgeWholesale.config.debug_mode
      ftp.passive = true
      yield ftp
    ensure
      ftp.close
    end
  end
rescue Net::FTPPermError => e
  raise case
  when e.message =~ /no such file or directory/i
    MgeWholesale::FileOrDirectoryNotFound
  else
    MgeWholesale::NotAuthenticated
  end
end

Protected Class Methods

requires!(hash, *params) click to toggle source
# File lib/mge_wholesale/base.rb, line 32
def self.requires!(hash, *params)
  params.each do |param|
    if param.is_a?(Array)
      raise ArgumentError.new("Missing required parameter: #{param.first}") unless hash.has_key?(param.first)

      valid_options = param[1..-1]
      raise ArgumentError.new("Parameter: #{param.first} must be one of: #{valid_options.join(', ')}") unless valid_options.include?(hash[param.first])
    else
      raise ArgumentError.new("Missing required parameter: #{param}") unless hash.has_key?(param)
    end
  end
end

Protected Instance Methods

connect(options) { |ftp| ... } click to toggle source

Instance methods become class methods through inheritance

# File lib/mge_wholesale/base.rb, line 46
def connect(options)
  self.class.connect(options) do |ftp|
    begin
      yield ftp
    ensure
      ftp.close
    end
  end
end
content_for(xml_doc, field) click to toggle source
# File lib/mge_wholesale/base.rb, line 71
def content_for(xml_doc, field)
  node = xml_doc.css(field).first

  if node.nil?
    nil
  else
    node.content.try(:strip)
  end
end
get_file(filename, file_directory = nil) click to toggle source
# File lib/mge_wholesale/base.rb, line 56
def get_file(filename, file_directory = nil)
  connect(@options) do |ftp|
    begin
      tempfile = Tempfile.new

      ftp.chdir(file_directory || MgeWholesale.config.top_level_dir)
      ftp.getbinaryfile(filename, tempfile.path)

      tempfile
    ensure
      ftp.close
    end
  end
end
requires!(*args) click to toggle source

Wrapper to `self.requires!` that can be used as an instance method.

# File lib/mge_wholesale/base.rb, line 28
def requires!(*args)
  self.class.requires!(*args)
end