Class: DispatchRider::Publisher

Inherits:
Object
  • Object
show all
Extended by:
ConfigurationSupport
Defined in:
lib/dispatch-rider/publisher.rb,
lib/dispatch-rider/publisher/configuration_reader.rb,
lib/dispatch-rider/publisher/configuration_support.rb

Defined Under Namespace

Modules: ConfigurationReader, ConfigurationSupport Classes: Base, Configuration, ServiceChannelMapper

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ConfigurationSupport

configuration, configure

Constructor Details

#initialize(configuration = self.class.configuration) ⇒ Publisher

Returns a new instance of Publisher.



11
12
13
14
15
16
17
# File 'lib/dispatch-rider/publisher.rb', line 11

def initialize(configuration = self.class.configuration)
  @notification_service_registrar = DispatchRider::Registrars::NotificationService.new
  @publishing_destination_registrar = DispatchRider::Registrars::PublishingDestination.new
  @service_channel_mapper = ServiceChannelMapper.new(publishing_destination_registrar)

  ConfigurationReader.load_config(configuration, self)
end

Instance Attribute Details

#notification_service_registrarObject (readonly)

Returns the value of attribute notification_service_registrar.



9
10
11
# File 'lib/dispatch-rider/publisher.rb', line 9

def notification_service_registrar
  @notification_service_registrar
end

#publishing_destination_registrarObject (readonly)

Returns the value of attribute publishing_destination_registrar.



9
10
11
# File 'lib/dispatch-rider/publisher.rb', line 9

def publishing_destination_registrar
  @publishing_destination_registrar
end

#service_channel_mapperObject (readonly)

Returns the value of attribute service_channel_mapper.



9
10
11
# File 'lib/dispatch-rider/publisher.rb', line 9

def service_channel_mapper
  @service_channel_mapper
end

#sns_channel_registrarObject (readonly)

Returns the value of attribute sns_channel_registrar.



9
10
11
# File 'lib/dispatch-rider/publisher.rb', line 9

def sns_channel_registrar
  @sns_channel_registrar
end

Instance Method Details

#publish(opts = {}) ⇒ Object



36
37
38
39
40
41
# File 'lib/dispatch-rider/publisher.rb', line 36

def publish(opts = {})
  options = opts.dup
  service_channel_mapper.map(options.delete(:destinations)).each do |(service, channels)|
    notification_service_registrar.fetch(service).publish(options.merge(:to => channels))
  end
end

#register_channel(service, name, options = {}) ⇒ Object



30
31
32
33
34
# File 'lib/dispatch-rider/publisher.rb', line 30

def register_channel(service, name, options = {})
  notification_service = notification_service_registrar.fetch(service)
  notification_service.register(name, options)
  self
end

#register_destination(name, service, channel, options = {}) ⇒ Object



24
25
26
27
28
# File 'lib/dispatch-rider/publisher.rb', line 24

def register_destination(name, service, channel, options = {})
  register_channel(service, channel, options)
  publishing_destination_registrar.register(name, :service => service, :channel => channel)
  self
end

#register_notification_service(name, options = {}) ⇒ Object



19
20
21
22
# File 'lib/dispatch-rider/publisher.rb', line 19

def register_notification_service(name, options = {})
  notification_service_registrar.register(name, options)
  self
end