module Qs::Payload
Constants
- METHOD_NAMES
Public Class Methods
deserialize(encoded_payload)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
private
# 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)
click to toggle source
# 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)
click to toggle source
# File lib/qs/payload.rb, line 14 def self.type_method_name(payload_type) METHOD_NAMES[payload_type] end