Sha256: 6aaed1425c6523a79de4e71de2befcb7d9991b2c15aaadd5f55860fb3b0019a3

Contents?: true

Size: 1.18 KB

Versions: 2

Compression:

Stored size: 1.18 KB

Contents

require 'aws-sdk'
require 'alephant/logger'

module Alephant
  module Publisher
    class InvalidKeySpecifiedError < StandardError; end

    class Options
      attr_reader :queue, :writer

      QUEUE_OPTS = [
        :receive_wait_time,
        :sqs_queue_name,
        :visibility_timeout,
        :aws_account_id
      ]

      WRITER_OPTS = [
        :lookup_table_name,
        :msg_vary_id_path,
        :renderer_id,
        :s3_bucket_id,
        :s3_object_path,
        :sequence_id_path,
        :sequencer_table_name,
        :view_path
      ]

      def initialize
        @queue  = {}
        @writer = {}
      end

      def add_queue(opts)
        execute @queue, QUEUE_OPTS, opts
      end

      def add_writer(opts)
        execute @writer, WRITER_OPTS, opts
      end

      private

      def execute(instance, type, opts)
        begin
          validate type, opts
          instance.merge! opts
        rescue Exception => e
          puts e.message
        end
      end

      def validate(type, opts)
        opts.each do |key, value|
          raise InvalidKeySpecifiedError, "The key '#{key}' is invalid" unless type.include? key.to_sym
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
alephant-publisher-0.6.9 lib/alephant/publisher/options.rb
alephant-publisher-0.6.8 lib/alephant/publisher/options.rb