Module: Qs::Payload
- Defined in:
- lib/qs/payload.rb
Defined Under Namespace
Modules: StringifyParams, Timestamp
Classes: InvalidError
Constant Summary
collapse
- METHOD_NAMES =
Hash.new{ |h, t| raise(InvalidError.new(t)) }.tap do |h|
h[Job::PAYLOAD_TYPE] = 'job'
h[Event::PAYLOAD_TYPE] = 'event'
end.freeze
Class Method Summary
collapse
Class Method Details
.deserialize(encoded_payload) ⇒ Object
18
19
20
21
|
# File 'lib/qs/payload.rb', line 18
def self.deserialize(encoded_payload)
payload_hash = Qs.decode(encoded_payload)
self.send(self.type_method_name(payload_hash['type']), payload_hash)
end
|
.event(payload_hash) ⇒ Object
41
42
43
44
45
46
47
|
# File 'lib/qs/payload.rb', line 41
def self.event(payload_hash)
Qs::Event.new(payload_hash['channel'], payload_hash['name'], {
:params => payload_hash['params'],
:publisher => payload_hash['publisher'],
:published_at => Timestamp.to_time(payload_hash['published_at'])
})
end
|
.event_hash(event) ⇒ Object
49
50
51
52
53
54
55
56
|
# File 'lib/qs/payload.rb', line 49
def self.event_hash(event)
self.message_hash(event, {
'channel' => event.channel.to_s,
'name' => event.name.to_s,
'publisher' => event.publisher.to_s,
'published_at' => Timestamp.new(event.published_at)
})
end
|
.job(payload_hash) ⇒ Object
27
28
29
30
31
32
|
# File 'lib/qs/payload.rb', line 27
def self.job(payload_hash)
Qs::Job.new(payload_hash['name'], {
:params => payload_hash['params'],
:created_at => Timestamp.to_time(payload_hash['created_at'])
})
end
|
.job_hash(job) ⇒ Object
34
35
36
37
38
39
|
# File 'lib/qs/payload.rb', line 34
def self.job_hash(job)
self.message_hash(job, {
'name' => job.name.to_s,
'created_at' => Timestamp.new(job.created_at)
})
end
|
.message_hash(message, hash) ⇒ Object
60
61
62
63
64
65
|
# File 'lib/qs/payload.rb', line 60
def self.message_hash(message, hash)
hash.tap do |h|
h['type'] = message.payload_type.to_s
h['params'] = StringifyParams.new(message.params)
end
end
|
.serialize(message) ⇒ Object
23
24
25
|
# File 'lib/qs/payload.rb', line 23
def self.serialize(message)
Qs.encode(self.send("#{self.type_method_name(message.payload_type)}_hash", message))
end
|
.type_method_name(payload_type) ⇒ Object
14
15
16
|
# File 'lib/qs/payload.rb', line 14
def self.type_method_name(payload_type)
METHOD_NAMES[payload_type]
end
|