Module: MultiMail::Service

Defined in:
lib/multi_mail/service.rb

Overview

Interacts with email APIs to send or receive email.

Instance Method Summary collapse

Instance Method Details

#recognizedArray

Returns the list of optional arguments.

Returns:

  • (Array)

    a list of optional arguments

See Also:

  • Fog::Service::recognized


34
35
36
# File 'lib/multi_mail/service.rb', line 34

def recognized
  @recognized ||= []
end

#recognizes(*args) ⇒ Object

Appends the given arguments to the list of optional arguments.

Parameters:

  • args

    one or more optional arguments

See Also:

  • Fog::Service::recognizes


26
27
28
# File 'lib/multi_mail/service.rb', line 26

def recognizes(*args)
  recognized.concat(args)
end

#requirementsArray

Returns the list of required arguments.

Returns:

  • (Array)

    a list of required arguments

See Also:

  • Fog::Service::requirements


18
19
20
# File 'lib/multi_mail/service.rb', line 18

def requirements
  @requirements ||= []
end

#requires(*args) ⇒ Object

Appends the given arguments to the list of required arguments.

Parameters:

  • args

    one or more required arguments

See Also:

  • Fog::Service::requires


10
11
12
# File 'lib/multi_mail/service.rb', line 10

def requires(*args)
  requirements.concat(args)
end

#validate_options(options, raise_error_if_unrecognized = true) ⇒ Object

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

Parameters:

  • options (Hash)

    arguments

Raises:

  • (ArgumentError)

    if it can't find a required argument or can't recognize an optional argument

See Also:

  • Fog::Service::validate_options


45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# 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