Module: Streama::Activity::ClassMethods
- Defined in:
- lib/streama/activity.rb
Instance Method Summary collapse
-
#activity(name, &block) ⇒ Definition
Defines a new activity type and registers a definition.
-
#publish(verb, data) ⇒ Streama::Activity
Publishes an activity using an activity name and data.
- #stream_for(actor, options = {}) ⇒ Object
- #stream_of(actor, options = {}) ⇒ Object
Instance Method Details
#activity(name, &block) ⇒ Definition
Defines a new activity type and registers a 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
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, ={}) query = {:receivers => {'$elemMatch' => {:id => actor.id, :type => actor.class.to_s}}} query.merge!({:verb.in => [*[:type]]}) if [: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, ={}) query = {'actor.id' => actor.id, 'actor.type' => actor.class.to_s} query.merge!({:verb.in => [*[:type]]}) if [:type] self.where(query).desc(:created_at) end |