module MultiMail::Service

Interacts with email APIs to send or receive email.

@see rdoc.info/gems/fog/Fog/Service

Public Instance Methods

recognized() click to toggle source

Returns the list of optional arguments.

@return [Array] a list of optional arguments @see Fog::Service::recognized

# File lib/multi_mail/service.rb, line 34
def recognized
  @recognized ||= []
end
recognizes(*args) click to toggle source

Appends the given arguments to the list of optional arguments.

@param args one or more optional arguments @see Fog::Service::recognizes

# File lib/multi_mail/service.rb, line 26
def recognizes(*args)
  recognized.concat(args)
end
requirements() click to toggle source

Returns the list of required arguments.

@return [Array] a list of required arguments @see Fog::Service::requirements

# File lib/multi_mail/service.rb, line 18
def requirements
  @requirements ||= []
end
requires(*args) click to toggle source

Appends the given arguments to the list of required arguments.

@param args one or more required arguments @see Fog::Service::requires

# File lib/multi_mail/service.rb, line 10
def requires(*args)
  requirements.concat(args)
end
validate_options(options, raise_error_if_unrecognized = true) click to toggle source

Ensures that required arguments are present and that optional arguments are recognized.

@param [Hash] options arguments @raise [ArgumentError] if it can't find a required argument or can't

recognize an optional argument

@see Fog::Service::validate_options

# File lib/multi_mail/service.rb, line 45
def validate_options(options, raise_error_if_unrecognized = true)
  keys = []
  for key, value in options
    unless value.nil?
      keys << key
    end
  end

  missing = requirements - keys
  unless missing.empty?
    raise ArgumentError, "Missing required arguments: #{missing.map(&:to_s).sort.join(', ')}"
  end

  if !recognizes.empty? && raise_error_if_unrecognized
    unrecognized = options.keys - requirements - recognized
    unless unrecognized.empty?
      raise ArgumentError, "Unrecognized arguments: #{unrecognized.map(&:to_s).sort.join(', ')}"
    end
  end
end