class DiasporaFederation::Callbacks
Callbacks
are used to communicate with the application. They are called to fetch data and after data is received.
Public Class Methods
new(events)
click to toggle source
Initializes a new Callbacks
object with the event-keys that need to be defined
@example
Callbacks.new %i( some_event another_event )
@param [Hash] events event keys
# File lib/diaspora_federation/callbacks.rb, line 16 def initialize(events) @events = events @handlers = {} end
Public Instance Methods
definition_complete?()
click to toggle source
Checks if all callbacks are defined @return [Boolean]
# File lib/diaspora_federation/callbacks.rb, line 54 def definition_complete? missing_handlers.empty? end
missing_handlers()
click to toggle source
Returns all undefined callbacks @return [Hash] callback keys
# File lib/diaspora_federation/callbacks.rb, line 60 def missing_handlers @events - @handlers.keys end
on(event, &callback)
click to toggle source
Defines a callback
@example
callbacks.on :some_event do |arg1| # do something end
@param [Symbol] event the event key @param [Proc] callback the callback block @raise [ArgumentError] if the event key is undefined or has already a handler
# File lib/diaspora_federation/callbacks.rb, line 31 def on(event, &callback) raise ArgumentError, "Undefined event #{event}" unless @events.include? event raise ArgumentError, "Already defined event #{event}" if @handlers.has_key? event @handlers[event] = callback end
trigger(event, *args)
click to toggle source
Triggers a callback
@example
callbacks.trigger :some_event, "foo"
@param [Symbol] event the event key @return [Object] the return-value of the callback @raise [ArgumentError] if the event key is undefined
# File lib/diaspora_federation/callbacks.rb, line 46 def trigger(event, *args) raise ArgumentError, "Undefined event #{event}" unless @events.include? event @handlers[event].call(*args) end