Class: SharedBroker::KeyProvider::Registry
- Inherits:
-
Object
- Object
- SharedBroker::KeyProvider::Registry
- Defined in:
- lib/shared_broker/key_provider.rb
Overview
Flexible registry for multiple keys and topic-based routing patterns
Instance Method Summary collapse
- #active_key_id_for(topic) ⇒ Object
-
#initialize(keys: {}, active_keys: {}) ⇒ Registry
constructor
A new instance of Registry.
- #key_for(topic) ⇒ Object
- #key_for_id(key_id) ⇒ Object
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
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 |