Sha256: b99272570ab6797db55bfb1aff58a23a390c9021ad2d42c02431678ad883ac0a

Contents?: true

Size: 949 Bytes

Versions: 1

Compression:

Stored size: 949 Bytes

Contents

require 'alephant/logger'
require 'alephant/broker/component'

module Alephant
  module Broker
    module Request
      class Batch
        include Logger

        attr_reader :batch_id, :components, :load_strategy

        def initialize(component_factory, env)
          logger.debug("Request::Batch#initialize(#{env.settings})")

          @component_factory = component_factory
          @batch_id   = env.data['batch_id']
          @components = components_for env

          logger.debug("Request::Batch#initialize: id: #{@batch_id}")
        end

        private

        def build_query(hash)
          hash.nil? ? '' : Rack::Utils.build_query(hash)
        end

        def components_for(env)
          env.data['components'].map do |c|
            @component_factory.create(
              c['component'],
              batch_id,
              build_query(c['options'])
            )
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
alephant-broker-2.0.2 lib/alephant/broker/request/batch.rb