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