Sha256: 303991e34d46f581702db66d15b034c917aec94f3a88a6197a96f0d265b99f7b

Contents?: true

Size: 929 Bytes

Versions: 1

Compression:

Stored size: 929 Bytes

Contents

require_relative 'configuration'
require 'slack-notifier'
require 'sidekiq'

module Slack
  class Mailer
    class DeliveryWorker
      include Sidekiq::Worker
      sidekiq_options queue: :slack_messages
      sidekiq_options retry: Proc.new{ Slack::Mailer::Configuration.config.slack_hook_urls.length }, dead: false
      sidekiq_retry_in { 1 }
      sidekiq_retries_exhausted do |msg|
        Slack::Mailer::DeliveryWorker.perform_async(msg['args'][0])
      end

      attr_accessor :name, :channel, :message, :url, :retry_count

      def retry_count
        @retry_count || 0
      end

      def perform(params)
        params['url'] = Slack::Mailer::Configuration.config.slack_hook_urls[retry_count]
        params.each{ |attribute, value| send("#{attribute}=", value) if respond_to?(attribute) }
        Slack::Notifier.new(url, username: name, channel: channel, link_names: 1).ping(message)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
slack_mailer-0.1.0 lib/slack_mailer/delivery_worker.rb