Class: SharedBroker::KeyProvider::Registry

Inherits:
Object
  • Object
show all
Defined in:
lib/shared_broker/key_provider.rb

Overview

Flexible registry for multiple keys and topic-based routing patterns

Instance Method Summary collapse

Constructor Details

#initialize(keys: {}, active_keys: {}) ⇒ Registry

Returns a new instance of Registry.



29
30
31
32
33
# File 'lib/shared_broker/key_provider.rb', line 29

def initialize(keys: {}, active_keys: {})
  validate_inputs!(keys, active_keys)
  @keys = keys.transform_keys(&:to_s)
  @active_keys = active_keys.transform_keys(&:to_s)
end

Instance Method Details

#active_key_id_for(topic) ⇒ Object



49
50
51
52
53
54
55
56
57
# File 'lib/shared_broker/key_provider.rb', line 49

def active_key_id_for(topic)
  topic_str = topic.to_s
  return @active_keys[topic_str] if @active_keys.key?(topic_str)

  pattern = find_matching_pattern(topic_str)
  return @active_keys[pattern] if pattern

  fallback_key_id
end

#key_for(topic) ⇒ Object



35
36
37
38
# File 'lib/shared_broker/key_provider.rb', line 35

def key_for(topic)
  key_id = active_key_id_for(topic)
  key_for_id(key_id)
end

#key_for_id(key_id) ⇒ Object

Raises:



40
41
42
43
44
45
46
47
# File 'lib/shared_broker/key_provider.rb', line 40

def key_for_id(key_id)
  return nil if key_id.nil?
  
  key = @keys[key_id.to_s]
  return key if key

  raise KeyNotFoundError, "Key ID #{key_id.inspect} not found in registered keys. Available keys: #{@keys.keys.inspect}"
end