Sha256: ed5a37ebd7c84d23fa2932c4ee7ff622fa73bc7af819c49fa6800c717b3a2f33
Contents?: true
Size: 1.25 KB
Versions: 1
Compression:
Stored size: 1.25 KB
Contents
require 'retries' # This is a basic implementation of the Notification service using Amazon SNS. # The expected usage is as follows : # notification_service = DispatchRider::NotificationServices::AwsSns.new # notification_service.publish(:to => [:foo, :oof], :message => {:subject => "bar", :body => "baz"}) module DispatchRider module NotificationServices class AwsSns < Base def notifier_builder AWS::SNS rescue NameError raise AdapterNotFoundError.new(self.class.name, 'aws-sdk') end def channel_registrar_builder Registrars::SnsChannel end def publish(options) channels(options[:to]).each do |channel| with_retries(max_retries: 10, rescue: AWS::Errors::MissingCredentialsError) do channel.publish(serialize(options[:message])) end end end # not really happy with this, but the notification service registrar system is way too rigid to do this cleaner # since you only can have one notifier for the whole service, but you need to create a new one for each region def channel(name) arn = self.fetch(name) region = arn.split(':')[3] notifier_builder.new(region: region).topics[arn] end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dispatch-rider-1.5.2 | lib/dispatch-rider/notification_services/aws_sns.rb |