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