class OrionWholesale::Base

Public Class Methods

connect(options = {}) { |sftp| ... } click to toggle source
# File lib/orion_wholesale/base.rb, line 4
def self.connect(options = {})
  requires!(options, :username, :password)
  
  Net::SFTP.start(OrionWholesale.config.ftp_host, options[:username], password: options[:password], port: OrionWholesale.config.ftp_port) do |sftp|
    yield(sftp)
  end
end

Protected Class Methods

requires!(hash, *params) click to toggle source
# File lib/orion_wholesale/base.rb, line 19
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) { |sftp| ... } click to toggle source

Instance methods become class methods through inheritance

# File lib/orion_wholesale/base.rb, line 33
def connect(options)
  self.class.connect(options) do |sftp|
    begin
      yield(sftp)
    end
  end
end
content_for(xml_doc, field) click to toggle source
# File lib/orion_wholesale/base.rb, line 41
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/orion_wholesale/base.rb, line 51
def get_file(filename, file_directory=nil)
  connect(@options) do |sftp|
    begin
      tempfile = Tempfile.new
      
      sftp.download!(File.join(file_directory, filename), tempfile.path)

      return tempfile
    end
  end
end
get_most_recent_file(file_prefix, file_directory=nil) click to toggle source
# File lib/orion_wholesale/base.rb, line 63
def get_most_recent_file(file_prefix, file_directory=nil)
  filenames = []

  connect(@options) do |sftp|
    sftp.dir.foreach(file_directory) { |entry| filenames << entry.name }
    filename = filenames.select{ |n| n.include?(file_prefix) }.sort.last

    tempfile = self.get_file(filename, file_directory) 
    return tempfile
  end
end
requires!(*args) click to toggle source

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

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