Module: OpenRouter::Callbacks
- Included in:
- Client
- Defined in:
- lib/open_router/callbacks.rb
Overview
Mixin providing event callback registration and dispatch for Client.
Instance Method Summary collapse
-
#clear_callbacks(event = nil) ⇒ self
Remove all callbacks for a specific event.
-
#on(event, &block) ⇒ self
Register a callback for a specific event.
-
#trigger_callbacks(event, data = nil) ⇒ Object
Trigger callbacks for a specific event.
Instance Method Details
#clear_callbacks(event = nil) ⇒ self
Remove all callbacks for a specific event
27 28 29 30 31 32 33 34 |
# File 'lib/open_router/callbacks.rb', line 27 def clear_callbacks(event = nil) if event @callbacks[event] = [] if @callbacks.key?(event) else @callbacks.each_key { |key| @callbacks[key] = [] } end self end |
#on(event, &block) ⇒ self
Register a callback for a specific event
16 17 18 19 20 21 |
# File 'lib/open_router/callbacks.rb', line 16 def on(event, &block) raise ArgumentError, "Invalid event: #{event}. Valid events are: #{@callbacks.keys.join(", ")}" unless @callbacks.key?(event) @callbacks[event] << block self end |
#trigger_callbacks(event, data = nil) ⇒ Object
Trigger callbacks for a specific event
40 41 42 43 44 45 46 47 48 |
# File 'lib/open_router/callbacks.rb', line 40 def trigger_callbacks(event, data = nil) return unless @callbacks[event] @callbacks[event].each do |callback| callback.call(data) rescue StandardError => e OpenRouter.log_warning("[OpenRouter] Callback error for #{event}: #{e.}") end end |