Module: Streama::Activity::ClassMethods

Defined in:
lib/streama/activity.rb

Instance Method Summary collapse

Instance Method Details

#activity(name, &block) ⇒ Definition

Defines a new activity type and registers a definition

Examples:

Define a new activity

activity(:enquiry) do
  actor :user, :cache => [:full_name]
  object :enquiry, :cache => [:subject]
  target_object :listing, :cache => [:title]
end

Parameters:

  • name (String)

    The name of the activity

Returns:

  • (Definition)

    Returns the registered definition



40
41
42
43
44
# File 'lib/streama/activity.rb', line 40

def activity(name, &block)
  definition = Streama::DefinitionDSL.new(name)
  definition.instance_eval(&block)
  Streama::Definition.register(definition)
end

#publish(verb, data) ⇒ Streama::Activity

Publishes an activity using an activity name and data

Parameters:

  • verb (String)

    The verb of the activity

  • data (Hash)

    The data to initialize the activity with.

Returns:



52
53
54
55
# File 'lib/streama/activity.rb', line 52

def publish(verb, data)
  receivers = data.delete(:receivers)
  new({:verb => verb}.merge(data)).publish(:receivers => receivers)
end

#stream_for(actor, options = {}) ⇒ Object



57
58
59
60
61
# File 'lib/streama/activity.rb', line 57

def stream_for(actor, options={})
  query = {:receivers => {'$elemMatch' => {:id => actor.id, :type => actor.class.to_s}}}
  query.merge!({:verb.in => [*options[:type]]}) if options[:type]
  self.where(query).desc(:created_at)
end

#stream_of(actor, options = {}) ⇒ Object



63
64
65
66
67
# File 'lib/streama/activity.rb', line 63

def stream_of(actor, options={})
   query = {'actor.id' => actor.id, 'actor.type' => actor.class.to_s}
   query.merge!({:verb.in => [*options[:type]]}) if options[:type]
   self.where(query).desc(:created_at)
end