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

Instance Method Details

#clear_callbacks(event = nil) ⇒ self

Remove all callbacks for a specific event

Parameters:

  • event (Symbol) (defaults to: nil)

    The event to clear callbacks for

Returns:

  • (self)

    Returns self for method chaining



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

Examples:

client.on(:after_response) do |response|
  puts "Used #{response.total_tokens} tokens"
end

Parameters:

  • event (Symbol)

    The event to register for (:before_request, :after_response, :on_tool_call, :on_error, :on_stream_chunk, :on_healing)

  • block (Proc)

    The callback to execute

Returns:

  • (self)

    Returns self for method chaining

Raises:

  • (ArgumentError)


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

Parameters:

  • event (Symbol)

    The event to trigger

  • data (Object) (defaults to: nil)

    Data to pass to the callbacks



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.message}")
  end
end