Sha256: 462ad21a77b6e6f84094349a4936518f9b7324a7e15cd5700af87d3e66087374

Contents?: true

Size: 1.08 KB

Versions: 79

Compression:

Stored size: 1.08 KB

Contents

# frozen_string_literal: true

module Msgr
  class Route
    attr_reader :consumer, :action, :opts

    MATCH_REGEXP = /\A(?<consumer>\w+)#(?<action>\w+)\z/

    # rubocop:disable Metrics/AbcSize
    # rubocop:disable Metrics/MethodLength
    def initialize(key, opts = {})
      @opts = opts
      raise ArgumentError.new 'Missing `to` options.' unless @opts[:to]

      add key

      result = MATCH_REGEXP.match(opts[:to].strip.to_s)

      unless result
        raise ArgumentError.new \
          "Invalid consumer format: #{opts[:to].strip.to_s.inspect}. " \
          'Must be `consumer_class#action`.'
      end

      @consumer = "#{result[:consumer].camelize}Consumer"
      @action   = result[:action].underscore
    end

    def keys
      @keys ||= []
    end
    alias routing_keys keys

    def prefetch
      @opts[:prefetch] || 1
    end

    def add(key)
      raise ArgumentError.new 'Routing key required.' unless key.present?

      keys << key
    end

    def accept?(_key, opts)
      self.opts == opts
    end

    def name
      "msgr.consumer.#{consumer}.#{action}"
    end
  end
end

Version data entries

79 entries across 79 versions & 1 rubygems

Version Path
msgr-1.2.0 lib/msgr/route.rb
msgr-1.1.0.1.b306 lib/msgr/route.rb
msgr-1.1.0.1.b305 lib/msgr/route.rb
msgr-1.1.0.1.b302 lib/msgr/route.rb
msgr-1.1.0.1.b301 lib/msgr/route.rb
msgr-1.1.0.1.b300 lib/msgr/route.rb
msgr-1.1.0.1.b297 lib/msgr/route.rb
msgr-1.1.0.1.b296 lib/msgr/route.rb
msgr-1.1.0.1.b295 lib/msgr/route.rb
msgr-1.1.0.1.b292 lib/msgr/route.rb
msgr-1.1.0.1.b291 lib/msgr/route.rb
msgr-1.1.0.1.b288 lib/msgr/route.rb
msgr-1.1.0.1.b285 lib/msgr/route.rb
msgr-1.1.0.1.b263 lib/msgr/route.rb
msgr-1.1.0.1.b249 lib/msgr/route.rb
msgr-1.1.0.1.b248 lib/msgr/route.rb
msgr-1.1.0.1.b244 lib/msgr/route.rb
msgr-1.1.0.1.b241 lib/msgr/route.rb
msgr-1.1.0.1.b240 lib/msgr/route.rb
msgr-1.1.0.1.b239 lib/msgr/route.rb