Module: Incoming::Strategy::ClassMethods

Defined in:
lib/incoming/strategy.rb

Instance Method Summary collapse

Instance Method Details

#default_optionsObject

Public Returns an inherited set of default options set at the class-level for each strategy.



28
29
30
31
# File 'lib/incoming/strategy.rb', line 28

def default_options
  return @default_options if @default_options
  @default_options = superclass.respond_to?(:default_options) ? superclass.default_options : {}
end

#option(name, value = nil) ⇒ Object

Public: Defines a valid class-level option for strategy

Examples:

class Incoming::Strategies::MyStrategy
  include Incoming::Strategy
  option :api_key
  option :mime, false
end

Returns nothing



44
45
46
# File 'lib/incoming/strategy.rb', line 44

def option(name, value = nil)
  default_options[name] = value
end

#receive(*args) ⇒ Object

Public: Global receiver

args - Arguments used to initialize strategy. Should be defined

by `initialize` method in strategy class.

Returns nothing



20
21
22
23
# File 'lib/incoming/strategy.rb', line 20

def receive(*args)
  strategy = new(*args)
  strategy.authenticate and strategy.receive(strategy.message)
end

#setup(opts = {}) ⇒ Object

Public: Configures strategy-specific options.

opts - A hash of valid options.

Examples:

class MailReceiver < Incoming::Strategies::MyStrategy
  setup api_key: 'asdf', mime: true
end

Returns nothing



59
60
61
62
63
64
65
66
# File 'lib/incoming/strategy.rb', line 59

def setup(opts = {})
  opts.keys.each do |key|
    next if default_options.keys.include?(key)
    raise InvalidOptionError.new(":#{key} is not a valid option for #{self.superclass.name}.")
  end

  @default_options = default_options.merge(opts)
end