Class: Satchel::ActivityBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/satchel/activity_builder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(activity_receiver, configuration_proc) ⇒ ActivityBuilder

Returns a new instance of ActivityBuilder.



9
10
11
12
13
14
15
16
17
18
# File 'lib/satchel/activity_builder.rb', line 9

def initialize(activity_receiver, configuration_proc)
  unless activity_receiver.respond_to?(:call)
    raise RuntimeError, "Excpected :activity_receiver #{activity_receiver.inspect} to be callable"
  end
  unless configuration_proc.respond_to?(:call)
    raise RuntimeError, "Excpected :configuration_proc #{configuration_proc.inspect} to be callable"
  end
  self.activity_receiver = activity_receiver
  self.configuration_proc = configuration_proc
end

Instance Attribute Details

#activity_receiverObject

Returns the value of attribute activity_receiver.



6
7
8
# File 'lib/satchel/activity_builder.rb', line 6

def activity_receiver
  @activity_receiver
end

#activity_typeObject

Returns the value of attribute activity_type.



43
44
45
# File 'lib/satchel/activity_builder.rb', line 43

def activity_type
  @activity_type
end

#configuration_procObject

Returns the value of attribute configuration_proc.



6
7
8
# File 'lib/satchel/activity_builder.rb', line 6

def configuration_proc
  @configuration_proc
end

#current_userObject

Returns the value of attribute current_user.



43
44
45
# File 'lib/satchel/activity_builder.rb', line 43

def current_user
  @current_user
end

#messageObject

Returns the value of attribute message.



43
44
45
# File 'lib/satchel/activity_builder.rb', line 43

def message
  @message
end

#subjectObject

Returns the value of attribute subject.



42
43
44
# File 'lib/satchel/activity_builder.rb', line 42

def subject
  @subject
end

Instance Method Details

#call(context) ⇒ Object



20
21
22
23
# File 'lib/satchel/activity_builder.rb', line 20

def call(context)
  configuration_proc.call(self, context)
  activity_receiver.call(self.to_activity_data_structure)
end

#to_activity_data_structureObject



25
26
27
28
29
30
31
32
# File 'lib/satchel/activity_builder.rb', line 25

def to_activity_data_structure
  ActivityDataStructure.new.tap {|ads|
    ads.subject = subject
    ads.current_user = current_user
    ads.message = message
    ads.activity_type = activity_type
  }
end